Hi,
ich stehe wieder mal vor einem Scheme-Problem.
Wie kann ich folgenden Code beliebig oft wiederholen, am besten per Parameter eine Scheme-Funktion?
\version "2.19.82"
\language "deutsch"
myScore =
#(define-void-function () ()
(add-score
(scorify-music #{ { c'1 } \pageBreak #}))
(add-score
(list #{ \markup \null
#}))
)
\myScore \myScore %% wie anders wiederholen?
Oder gibt es eine ganz andere Möglichkeit? Der Hintergrund ist der, dass ich aus einer Seite mit leeren Notenzeilen ein Heft bilden will, und dabei nur die Seitenzahl angeben möchte.
Zitat von: Manuela am Sonntag, 29. September 2019, 19:13
Wie kann ich folgenden Code beliebig oft wiederholen, am besten per Parameter eine Scheme-Funktion?
Mit einer Schleife und apply geht das ganz gut:
printScoreTimes =
#(define-void-function (the-score the-times) (procedure? number?)
(let loop ((c the-times))
(if (> c 0)
(begin
(apply the-score '())
(loop (1- c))))))
\printScoreTimes #myScore 5
Edit: Du kannst auch das ganze scorify-music etc. in die Funktion mit reinpacken:
\version "2.19.83"
myScore = { { c'1 } \pageBreak }
printScoreTimes =
#(define-void-function (the-score the-times) (ly:music? number?)
(let loop ((c the-times))
(if (> c 0)
(begin
(add-score (scorify-music the-score))
(loop (1- c))))))
\printScoreTimes \myScore 5
Danke Malte, ich probier das so bald wie möglich aus