Guile: "Missing expression" [Gelöst]

Begonnen von ingmar, Samstag, 17. August 2019, 12:46

« vorheriges - nächstes »

ingmar

Hallo,

immer wieder erhalte ich aus Guile die Fehlermeldung "Missing expression".

Beispiel:
\version "2.19.83"

mutabor = #(define-scheme-function (arg) (string?)
(let ((result (string-append arg "... aber verändert!")))))
           
beethoven = "Mein Text"
\markup { \mutabor \beethoven }


Was läuft hier falsch?

Danke für die Unterstützung! : - )

--ingmar

Malte

Hallo ingmar,

ein let-Ausdruck hat folgende Form:
(let
  ((var1 wert1)
   (var2 wert2)
   ...
   (varn wertn))
  tuwasmitvar1bisn)

Erst einmal werden einer oder mehreren Variablen Werte zugewiesen (wenn spätere Zuweisungen frühere Variablen verwenden, brauchst du let* statt let), dann können diese in einem Ausdruck verwendet werden, der zurückgegeben wird. Der Ausdruck tuwasmitvar1bisn fehlt bei dir, du definierst zwar result, verwendest es dann aber nicht mehr. Wenn die Funktion result zurückgeben soll, mußt du es auch hinschreiben – oder aber du läßt das mit dem let ganz bleiben ;) Beide Möglichkeiten siehst du im folgenden Code:\version "2.19.83"

mutaborI =
#(define-scheme-function (arg) (string?)
   (let
     ((result (string-append arg "... aber verändert!")))
     result))

mutaborII =
#(define-scheme-function (arg) (string?)
   (string-append arg "... aber verändert!"))

beethoven = "Mein Text"
\markup { \mutaborI \beethoven }
\markup { \mutaborII \beethoven }

Viele Grüße
Malte

ingmar

Upps, ja... irgendwie logisch.

Das let ist natürlich völlig unnötig.

Danke!!
--ingmar