Jean, Merci
This is a perfect solution, and, a clear explanation about why my solution failed. Thank you very much Ken Ledeen Mobile: 617-817-3183 www.nevo.com www.bitsbook.com tiny.cc/KenLedeen tiny.cc/KenLedeenAmazon ᐧ On Sat, Feb 27, 2021 at 10:43 AM Jean Abou Samra <j...@abou-samra.fr> wrote: > Le 27/02/2021 à 02:16, Ken Ledeen a écrit : > > > I am struggling to understand the restrictions on substitution functions. > > > > For example: > > > > 1) can a function include "\score { ...}" or can it only be invoked > > INSIDE a \score? > > > > 2) is it possible to include \header { ...} inside a substitution > > function? It fails when I try, but I don't understand why. > > > > I assume I am missing some basic concepts regarding their use. > > > > Thanks! > > > Hello, > > Music functions must return music objects; \score blocks are not music > but general containers that enclose music as well as other objects such > as \header and \layout blocks. > > However, replacing define-music-function with define-scheme-function, > you can define more versatile functions that are allowed to return any > kind of object for interpretation. For example: > > \version "2.23.1" > > failingFunction = > #(define-music-function () () > #{ > \score { > \header { > piece = "Piece A" > } > { c' } > } > #}) > > % \failingFunction > > succeedingFunction = > #(define-scheme-function () () > #{ > \score { > \header { > piece = "Piece B" > } > { c' } > } > #}) > > \succeedingFunction > > > Hope that helps, > Jean > >