Am 07.11.2016 um 11:03 schrieb Urs Liska:
>
> Am 07.11.2016 um 09:57 schrieb Richard Shann:
>> 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)))
> No. This will return either 'left or 'right if successful. But a
> predicate is to return #t or #f.
> Urs

Oops, forget about that. I mixed that up with another case. eq? *will*
return #t or #f.

>
>>> 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.

But here my previouso comment applies. Predicates should return #t or #f.
Of course there are many valid and valuable use cases of the "non-false
expression" appraoch.

See also
https://scheme-book.ursliska.de/scheme/procedures/predicates.html and
https://scheme-book.ursliska.de/scheme/conditionals/if.html

Urs

>> Richard
>>
>>
>>
>>
>>
>>
>
> _______________________________________________
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to