On Mon, 2016-11-07 at 06:45 +0100, Urs Liska wrote: > > Am 7. November 2016 01:20:23 MEZ, schrieb Andrew Bernard > <andrew.bern...@gmail.com>: > >Hi Simon, > > > >Thanks! Exactly perfect. Sometimes the completely obvious escapes me. > >Better > >have another coffee. > > > >Most appreciated. > > > >I suppose of course that to make it a predicate without the preliminary > >let > >block (not that I have any objection to that) one would have to modify > >lilypond internals, which would not be desirable. > > Not at all! > > Just define your predicate with > > #(define (side? obj) > (if (or (eq? obj 'left) > (eq? obj 'right)) > #t #f))
more succinctly #(define (side? obj) (or (eq? obj 'left) (eq? obj 'right))) > > and use it like any other procedure. The ? at the end is just a convention, > predicates are nothing else > than procedures taking one argument and returning #t or #f. #t or any other value that is not #f - the value #t is rather rarely used in conventional Scheme code; great use is made of the convenience that all expressions are true except #f which is false. Richard _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user