lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Universal default value function


From: Aaron Hill
Subject: Re: Universal default value function
Date: Sun, 24 Jan 2021 20:53:40 -0800
User-agent: Roundcube Webmail/1.4.9

On 2021-01-24 8:17 pm, Vaughan McAlley wrote:
Hi,

I am trying to write a function that will accept a symbol and a value, and
assign that value to the symbol *if the variable has not already been
defined *(such as in an include file).

At the moment, it runs without complaining, but the result is always "bar",
the default value. Can anyone spot the problem?

Did you mean to attach or include a code snippet? Hard to spot any problem without it. :)

Regardless, review the following:

%%%%
\version "2.22.0"

valueOrDefault =
#(define-scheme-function
  (module symbol default)
  ((module? (current-module)) symbol? scheme?)
  (module-ref module symbol default))

defineOnce =
#(define-void-function
  (module symbol value)
  ((module? (current-module)) symbol? scheme?)
  (or (module-defined? module symbol)
      (module-define! module symbol value)))

{
  \valueOrDefault foo { b'1 }
  \defineOnce foo { b'4 4 2 }
  \valueOrDefault foo { b'1 }
  \defineOnce foo { b'8 8 2. }
  \foo
}
%%%%

I included the optional module parameter in the event that users might need to work outside the current scope.


-- Aaron Hill



reply via email to

[Prev in Thread] Current Thread [Next in Thread]