Am Samstag, 24. Januar 2015 18:18 CET, "[email protected]" <[email protected]>
schrieb:
> I want to create my own display function that combines several commands
> into one function.
>
> I have tried this
>
> \version "2.19.15"
>
> #(define bar #f)
> #(define tmp #f)
>
> meDisplay =
> #(define-void-function (parser location message value)
> (markup? variable?)
> (display message)
> (display " : ")
> (display value)
> (newline)
> )
>
> foo =
> #(define-void-function (parser location mus)
> (ly:music?)
> (set! tmp (cons #{ b #} #{ cis #}))
> (meDisplay "tmp" tmp)
> (newline)
> (set! bar (acons 1 tmp bar))
> (display bar)
> (newline)
> (set! tmp (cons #{ cis #} #{ b #}))
> (display tmp)
> (newline)
> (set! bar (acons 2 tmp bar))
> (display bar)
> (newline)
> mus
> )
>
> {
> \foo c'
> }
>
> But I get this error:
> Parsing...c:/users/ame/appdata/local/temp/frescobaldi-a77ofr/tmpe2f6wv/document.ly:19:6:
>
> In expression (meTrace "tmp" tmp):
> c:/users/ame/appdata/local/temp/frescobaldi-a77ofr/tmpe2f6wv/document.ly:19:6:
>
> Wrong type to apply: #<Music function #<procedure #f (parser location
> message value)>>
> Exited with return code 1.
>
> I'm probably doing a simple error(?) Like having the wrong type of
> define-???-function.
Yes, you declare meDisplay as taking four arguments but call it with two.
Why don't you define it as a simple scheme function?
#(define (meDisplay message value)
(display message)
(display " : ")
(display value)
(newline))
Why do you declare foo as a void function? After all, it _does_ return music,
doesn't it?
foo =
#(define-music-function (parser location mus)
(ly:music?)
(set! tmp (cons #{ b #} #{ cis #}))
(meDisplay "tmp" tmp)
(newline)
(set! bar (acons 1 tmp bar))
(display bar)
(newline)
(set! tmp (cons #{ cis #} #{ b #}))
(display tmp)
(newline)
(set! bar (acons 2 tmp bar))
(display bar)
(newline)
mus)
> I have tried a couple of different type of
> functions but ...
If you do it like above everything should work.
HTH Ralf Mattes
> // Anders
> --
> English isn't my first language.
> So any error or strangeness is due to the translation.
> Please correct my English so that I may become better.
>
> _______________________________________________
> lilypond-user mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/lilypond-user
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user