• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Variablenübergabe in eine Scheme-Funktion

Begonnen von ingmar, Samstag, 11. Februar 2017, 15:50

Vorheriges Thema - Nächstes Thema

ingmar

hallo,


zur Übung hab ich eine kleine Funktion in scheme erstellt, die mir ein wenig Notentext drucken soll. Den Name des Schlüssels möchte ich per Parameter übergeben. Leider gelingt es mir nicht, und ich verstehe einfach das Problem nicht.

\version "2.19.37"

MyScore = #(define-scheme-function ( myString ) (string) (string? ) #{
\score {
\new Staff \with { \clef \myString } { \relative { c' d e f g2 a g4 f e d c1 } }
}
#})

\MyScore "alto"


Fehlermeldung: Wrong type (expecting character): "alto". Tja! Kann jemand helfen? Danke..!

Edit: Hatte in der Funktionsdeklaration "(string)" oben vergessen, und so ist auch die Fehlermeldung eine andere.

--ingmar

fugenkomponist

Zitat von: ingmar am Samstag, 11. Februar 2017, 15:50
Edit: Hatte in der Funktionsdeklaration "(string)" oben vergessen, und so ist auch die Fehlermeldung eine andere.
Wofür brauchst du das? In der Dokumentation (Extending Abschnitt 2.2.1) steht da nichts davon.

Zu deiner Frage: Ein Argument einer so in Scheme definierten Funktion wird per $ oder # verwendet, nicht per \.\version "2.19.37"

MyScore = #(define-scheme-function (myString) (string?) #{
  \score {
    \new Staff \with { \clef #myString } { \relative { c' d e f g2 a g4 f e d c1 } }
  }
             #})

\MyScore "alto"