[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
- Defining new Scheme predicates, Andrew Bernard, 2016/11/06
- Re: Defining new Scheme predicates, Simon Albrecht, 2016/11/06
- Re: Defining new Scheme predicates, Simon Albrecht, 2016/11/06
- RE: Defining new Scheme predicates, Andrew Bernard, 2016/11/06
- Re: Defining new Scheme predicates, Thomas Morley, 2016/11/06
- RE: Defining new Scheme predicates, Urs Liska, 2016/11/07
- Re: Defining new Scheme predicates,
Richard Shann <=
- Re: Defining new Scheme predicates, Urs Liska, 2016/11/07
- Re: Defining new Scheme predicates, Urs Liska, 2016/11/07
- Re: Defining new Scheme predicates, David Kastrup, 2016/11/07
- Re: Defining new Scheme predicates, David Kastrup, 2016/11/07