lilypond-user
[Top][All Lists]
Advanced

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

Re: Defining new Scheme predicates


From: Richard Shann
Subject: Re: Defining new Scheme predicates
Date: Mon, 07 Nov 2016 08:57:04 +0000

On Mon, 2016-11-07 at 06:45 +0100, Urs Liska wrote:
> 
> Am 7. November 2016 01:20:23 MEZ, schrieb Andrew Bernard <address@hidden>:
> >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









reply via email to

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