• 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ü

scheme - very basic: quote, unquote, quasiquote bzw ' oder , oder `

Begonnen von harm6, Dienstag, 13. Mai 2014, 22:43

Vorheriges Thema - Nächstes Thema

harm6

Hallo,

dieser thread bezieht sich auf folgenden post
Zitat von: iugin am Sonntag,  4. Mai 2014, 19:10
- (make-music) ist immer gefolgt von einem Namen gross geschrieben (wie zb. 'SequentialMusic) und 'elements oder 'articulations oder so. Das Apostroph bedeutet, dass sie Liste sind.

Das normale Apostroph: ' bedeutet lediglich, daß der nachfolgende Ausdruck nicht bearbeitet wird.
Z.B.
Zitatguile> '(1 (+ 2 3) 4)
(1 (+ 2 3) 4)
oder 
Zitatguile> (cons "a" '(+ 2 3))
("a" + 2 3)

Wenn man aber das rückwärts geneigte Apostroph verwendet: ` so erhält man die Möglichkeit manche Ausdrücke doch verarbeiten zu lassen.
Diese Ausdrücke müssen aber mit einem Komma: , markiert werden.
Hier passiert erstmal nichts, denn das Komma fehlt:
Zitatguile> `(1 (+ 2 3) 4)
(1 (+ 2 3) 4)
Mit Komma wird die Addition ausgeführt:
Zitatguile> `(1 ,(+ 2 3) 4)
(1 5 4)
oder
Zitatguile> (cons "a" `,(+ 2 3))
("a" . 5)

Das einfache Apostroph bezeichnet also keineswegs eindeutig eine Liste, sondern es hat eine Funktion.
Symbols brauchen auch ein Apostroph, sonst werden sie für einen (mitunter nicht definierten) Bezeichner gehalten.
Beispiele:
Zitatguile> 'symbol
symbol
guile> symbol
#<procedure symbol args>
guile> Symbol
ERROR: Unbound variable: Symbol
ABORT: (unbound-variable)

Ansonsten sind die Zeichen '`, nur Kurzschreibweisen
'  -- quote
` -- quasiquote
,  -- unquote

'(a b) ist also dasgleiche wie (quote (a b))
Die anderen entsprechend.

Man bemerke den grundsätzlichen Unterschied zu
(list 1 (+ 2 3) 4)
hier wir die Addition ausgeführt, da kein quote-Befehl dies verhindert.
Zitatguile> (list 1 (+ 2 3) 4)
(1 5 4)

Man kann ja mal ein bißchen mit den verschiedenen Möglichkeiten rumspielen ...

Gruß,
  Harm