On Mon, 2016-11-07 at 06:45 +0100, Urs Liska wrote:
>
> Am 7. November 2016 01:20:23 MEZ, schrieb Andrew Bernard
> <[email protected]>:
> >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
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user