On 2017/02/14 18:20:56, git wrote:

Ah yes. I had removed the
   (and (eq? op =)
part, which I shouldn't have done

Well, that works only for a very particular equivalence.  How about
something like

#(define (lexicographically op a b)
   (let* ((ca (car a))
          (iseql (op ca ca)))
     (let loop ((ca ca) (cb (car b)) (a (cdr a)) (b (cdr b)))
       (let ((axb (op ca cb)))
         (if (and (pair? a) (pair? b)
                  (eq? axb iseql (op cb ca)))
             (loop (car a) (car b) (cdr a) (cdr b))
             axb)))))

#(define (ly:version? op . rest)
  (lexicographically op (ly:version) rest))

#(format #t "> 2.19 : ~S, >= 2.19 : ~S\n= 2.16 : ~S, = 2.19 : ~S\n"
         (ly:version? > 2 19)
         (ly:version? >= 2 19)
         (ly:version? = 2 16)
         (ly:version? = 2 19))


https://codereview.appspot.com/317270043/

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to