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

Reply via email to