Das Problem ist, dass \markup anscheinend nicht einfach Zahlen ausgeben kann.
\markup 9gibt den String „9“ aus, es hat den gleichen Effekt wie
\markup "9"Man könnte folgendermaßen erzwingen, dass die 9 als Zahl-Datentyp in Scheme interpretiert wird:
\markup #9Und schon hat man den gleichen Fehler „not a markup“. Ein Scheme-String geht dagegen:
\markup #"9"Also gehen auch Sachen wie
\markup #(1+ 9)nicht, wohl aber
\markup #(number->string (1+ 9))Die Lösung für dein Problem sieht also folgendermaßen aus:
#(define (inc a)
(number->string (1+ a)))
\markup #(inc 9)Edit: Übrigens ist dein erster Versuch mit der Ausgabe 9 so gesehen „falscher“ als der zweite. Denn auch die Funktion Increm ist eben eine Funktion und kein String und kann deshalb nicht einfach ausgegeben werden. Die 9 danach wird als String interpretiert und deshalb ausgegeben. Erst die Klammern in deinem zweiten Versuch führen dazu, dass die Funktion auf die Zahl angewendet wird, diese Version ist also eher das, was du eigentlich wolltest

2. Edit: Es gibt auch noch Funktionen ly:message und display und write (letztere unterscheiden sich ein bisschen, tun aber in diesem Fall fast das gleiche), die für Ausgaben im Terminal während des Übersetzens gedacht sind:
\version "2.19.25"
#(define (inc a)
(ly:message "Unsere neue Zahl ist ~a" (1+ a)))
#(inc 5)
#(define (inc a)
(begin
(display "Und hier geb ich noch mal was aus\n")
(display (1+ a))
(newline)))
#(inc 8)
\markup "Das hier landet als einziges in der Partitur"