Noeck <[email protected]> writes: >>>> Second question: Is there a function to change all 4 values without >>>> typing the whole alist, only the values? … >>> >>> Write it using define-scheme-function. >> >> Ok, I just wanted to make sure that I am not reinventing the wheel. I >> feel now confident to write such a function (I think) > > > Ok, I was too optimistic. Could anyone help me out here, I do not > understand what's wrong here: > > \version "2.17.14" > > % this is intended to return an alist with the given values: > make-spacing = #(define-scheme-function > (parser location bdist mdist padd stret) > (number? number? number? number?) > '((basic-distance . bdist) > (minimum-distance . mdist) > (padding . padd) > (stretchability . stret)) > )
Your alist maps symbols to symbols. The values of the parameters bdist, mdist etc are never accessed. You probably mean something like `((basic-distance . ,bdist) (minimum-distance . ,mdist) ... and yes, that's a backquote (in Scheme parlance, a quasiquote) starting that list. > #(display (make-spacing 60 2 3 4)) > system-system-spacing = #(make-spacing 60 2 3 4) Anything defined using define-scheme-function is not called from Scheme but from LilyPond. It merely returns a Scheme value. So you use system-system-spacing = \make-spacing 60 2 3 4 which is actually what you asked for in your original request. -- David Kastrup _______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
