Hello Lukas,

Many thanks for the clarification. My apologies for the belated reply since
my week got quite busy. I understand your explanation: You can also use
the question mark in the variable name, which confused me for a moment.

I think I was mixing information I read previously about predicates in
LilyPond, and thought myself restricted to the list here:
http://lilypond.org/doc/v2.20/Documentation/notation/predefined-type-predicates

I could also modify your to use a boolean explicitly:
scoreIf = #(define-void-function (some-condition score) (boolean? ly:score?)
     (if some-condition (add-score score)))

But I'm really no Scheme expert. Still hacking my way through.


Many thanks,
mattfong

On Thu, Dec 3, 2020 at 8:45 AM Lukas-Fabian Moser <l...@gmx.de> wrote:

> Hi Matthew,
>
> Am 03.12.20 um 01:50 schrieb Matthew Fong:
> > ... and I will have use of question? Didn't know about that!
>
> In fact, that's just an arbitrary name for a variable! (And, to be
> honest, I wasn't completely happy with my choice.)
>
> So, the following would work just the same:
>
> scoreIf = #(define-void-function (some-condition score) (scheme? ly:score?)
>      (if some-condition (add-score score)))
>
> I would have liked to use "condition" or "cond", but these are reserved
> words in Guile, if I'm not mistaken. Maybe "print-it" would be a nice
> name: "if print-it (add-score score)" seems to be quite self-explanatory.
>
> As for the ? in "question?": By convention, names ending in "?" are used
> for "predicates", that is, functions returning only #t or #f as values.
> I seem to remember that some people extend this convention and use the ?
> also for variables that should contain boolean values (#t/#f), and
> that's what I did here.
>
> Lukas
>
>

Reply via email to