Yann <[email protected]> writes: > 2014-02-13 15:36 GMT+01:00 David Nalesnik <[email protected]>: >> Hi Yann, >> >> Looks to be simply a problem with too many parentheses. >> Try this: >> >> \version "2.18.0" >> correctionAlignement = ##t >> aligner = \relative c' { g'4. g8 c,4( c) | } >> lyric = \lyricmode { Glo -- ri -- a __ } >> >> << >> \new Staff << >> \new Voice = "melodie" \relative c'{ \voiceOne g'4. g8 c,2 | | } >> \new Voice = "alto" \relative c' { \voiceTwo c4 bes c2 | } >> #(cond ((eq? correctionAlignement #t) >> #{ \new NullVoice = "aligner" \aligner #})) >> >> >> #(if (eq? correctionAlignement #t) >> #{ \new Lyrics \lyricsto "aligner" $lyric #} >> #{ \new Lyrics \lyricsto "melodie" $lyric #}) >> >> >> >> HTH, >> David > > Hi David, thank you very much for your almost instant answer :) > > Ah yes, it works. I didn't think too much parentheses could harm... Is > it because they have some special meaning in scheme (evaluate this > expression, or something like this) ?
Yes. When an expression is read, () enclose a list. When a list is evaluated, its first element is the function to call and the remaining elements (after evaluation for functions, before evaluation for macros) are the arguments. So + is a function, and (+) is 0, namely the addition function called on zero arguments. And ((+)) tries calling 0 as a function, but since it is not a function, you get an error. -- David Kastrup _______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
