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