Allgemein > Hilfe beim Einstieg in Lilypond

Scheme Syntax

(1/1)

rJazz:
Hallo,
ich scheitere bei Scheme im Moment noch an  der Befehlsverkettung:


--- Code: ---\version "2.19.27"
# (define a 204) 
#(display a)

#( (define b 124)  (display b))
 

--- Ende Code ---

die Ausgabe von a und b funktionieren,
ich bekommen aber (für den Teil für b)
einen Syntaxfehler:


--- Zitat ---Parsing...
/home/std/Dokumente/python/lilypond/scheme_test.ly:5:2: error: GUILE signaled an error for the expression beginning here
#
 ( (define b 124)  (display b))
204124
Wrong type to apply: #<unspecified>
fatal error: failed files: "/home/std/Dokumente/python/lilypond/scheme_test.ly"
 
--- Ende Zitat ---

Werden Befehle nicht wie Listenelemente verkettet?

harm6:
Aus dem guile-manual:


--- Zitat ---— Scheme Syntax: define name value

    Create a top level variable named name with value value. If the named variable already exists, just change its value. The return value of a define expression is unspecified.
--- Ende Zitat ---
(Fettdruck von mir)

D.h. in der Liste:
    ( (define b 124)  (display b))
ist der erste Ausduck unspecified.
Insoweit weiß guile nicht was es mit dieser Liste auf sich hat und gibt einen error aus:  Wrong type to apply: #<unspecified>

Tatsächlich könntest Du
  (begin (define b 124)  (display b))
kodieren. Ist aber befremdlich.

Besser:

--- Code: ---(let ((b 124))
  (display b))

--- Ende Code ---

oder


--- Code: ---((lambda (b)
  (display b)) 124
--- Ende Code ---

Siehe auch:
http://lilypondblog.org/2014/05/local-variables-in-scheme-lilypond/


HTH,
  Harm




rJazz:
Wow, das ist nicht trivial.  :D
Danke!

harm6:
Eine weitere Syntaxmöglichkeit:

--- Code: ---(let ()
  (define b 124)
  (display b))
--- Ende Code ---

Gruß.
  Harm

fugenkomponist:
Dann aber doch lieber begin, oder? Oder gibts da einen semantischen Unterschied?

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln