Le 12 nov. 08 à 05:48, Carl Sorensen a écrit :
Johan Vromans <jvromans <at> squirrel.nl> writes:
Stupic question, I assume...
In a scheme function I have a symbol that is the name of a lilypond
expression. How can I get its music value?
E.g.
ifDefined =
#(define-music-function
(parser location sym)
(symbol?)
(if (defined? sym)
??? return the value of the expression ???
(make-music 'SequentialMusic 'void #t)))
So I can write:
\ifDefined #'myNotes
and have it expand to myNotes (if defined), or a void music
expression
otherwise.
ifDefined =
#(define-music-function (parser location sym) (symbol?)
" Return the music if @code{sym} is defined, and void if not"
(if (defined? sym)
(primitive-eval sym)
(make-music 'SequentialMusic 'void #t)))
A more idiomatic way to do it:
ifDefined =
#(define-music-function (parser location sym) (symbol?)
(let ((music (ly:parser-lookup parser sym)))
(if (ly:music? music)
music
(make-music 'Music 'void #t))))
nicolas
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user