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