lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Add lilypond version predicates/operators (issue 317270043 by addres


From: dak
Subject: Re: Add lilypond version predicates/operators (issue 317270043 by address@hidden)
Date: Tue, 14 Feb 2017 11:55:02 -0800

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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]