Autor Thema: Variablenübergabe in eine Scheme-Funktion  (Gelesen 1022 mal)

ingmar

  • Gast
Variablenübergabe in eine Scheme-Funktion
« am: Samstag, 11. Februar 2017, 15:50 »
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
« Letzte Änderung: Samstag, 11. Februar 2017, 16:01 von ingmar »

fugenkomponist

  • Gast
Re: Variablenübergabe in eine Scheme-Funktion
« Antwort #1 am: Samstag, 11. Februar 2017, 17:00 »
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"