Scheme: if #t

Begonnen von ingmar, Dienstag, 13. November 2018, 17:01

« vorheriges - nächstes »

ingmar

Hi,

wahrscheinlich wieder ein ganz blöder Fehler...! Das erste Beispiel erzeugt den gewünschten Score, das zweite kompiliert anstandslos, macht dann aber gar nix. Was geht da schief?

\version "2.19.64"
music = \relative { c'4 d e f g2 g }
\score { \music }



\version "2.19.64"
music = \relative { c'4 d e f g2 g }
#(if #t
  #{ \score { \music } #}
)



Gruß,
--ingmar

harm6

Hallo Ingmar,

das zweite Beispiel gibt ##{ \score { \music } #} zurück. Also ein in guile eingebettete Dateiformat. Guile kann natürlich nichts weiter damit anfangen und LilyPond kriegt es gar nicht zu sehen. Es ist eben kein Funktionsaufruf...

Man muß also LilyPond dazu bewegen sich dieses Dateiformat anzusehen.
(1) mittles 'add-score'

music = \relative { c'4 d e f g2 g }

#(if #t
     (add-score #{ \score { \music } #}))


oder

(2) mittels $ (dann brauchst Du allerdings ein Ereignis, daß LilyPond zeigt wo die Definition von 'music' zu Ende ist. Der Aufruf von 'add-score' erledigt das im ersten Beispiel)

music = \relative { c'4 d e f g2 g }

#(list)

$(if #t
     #{ \score { \music } #})


Vergleiche auch was passiert mit
#"foo" (nix sichtbares)
$"foo" (ein toplevel markup)



HTH,
  Harm

ingmar

achja, mein alter Fehler, den hatten wir schonmal.

Danke!
--ingmar