On Mon, Mar 30, 2026 at 04:33:08AM +0000, David Zelinsky wrote: > On Mon, Mar 30, 2026 at 05:04:30AM +0200, [email protected] wrote: > > David Zelinsky: > > ... > > > In Lisp (of which Scheme is a dialect) a "symbol" is an identifier, > > > which can have simultaenous associated values of one or more of various > > > types, including variable or function. Which value type is used depends > > > on context. A slightlhy more detailed explanation is here: > > > > > > https://en.wikipedia.org/wiki/Common_Lisp#Scalar_types > > ... > > > > I don't follow, well yes [1] says with some vague wordings that a symbol > > is an identifier also somewhat implying that it isn't a variable, > > [2] says it is type but doesn't really bother to explain it. > > I just find a lot jumbo mumbo, perhaps someone who alreade knows > > guile in and out would perhaps understand it perfectly well... > > > > [1] https://people.csail.mit.edu/jaffer/r5rs_4.html#SEC15 > > [2] https://people.csail.mit.edu/jaffer/r5rs_5.html#SEC20 > > > > And regarding common lisp, Guy L. Steele Jr. writes in his book > > "common lisp" from 1990 that (section 2.3. Symbols): > > Symbols are Lisp data objects that serve several purposes and have > > several interesting characteristics. Every object of type > > ??symbol?? has a name, called its "print name". > > ... > > Symbols have a component called the "property list", or "plist". > > ... > > Symbols are also used to represent certain kinds of variables in > > Lisp programs, > > > > So, it seems clear to me that a symbol cannot be a simple variable > > like the "a" one here: a = \lyricmode { hello } > > > > [3] shows a symbol: 'thickness > > Does that mean that the only symbols in lilypond are thoose in > > scm/define-music-types.scm ? > > > > [3] https://lilypond.org/doc/v2.25/Documentation/extending/property-alists > > > > Regards, > > /Karl Hammar > > I don't know much about LilyPond internals. But in Scheme (or other Lisp > variants) any syntactically allowed identifier preceded by a single quote is > a symbol. > > I think of a Lisp symbol as kind of like a C struct with fields named > "variable" and "function" and a couple others. Except rather than accessing > the fields by naming them, they are accessed implicitly by the way the symbol > is used. So, calling "set" on a symbol sets its variable value, and using it > (without the single quote) as the argument to a function access that value. > And using it with "defun" sets its function value; and using it as a function > accesses that value. > > There may be a more precise computer-science description of a symbol, but in > my experience, the description I gave seems to fit well with usage. > > -David
I should have said "define" rather than "defun". The latter is how to define a function in Emacs-Lisp, which is where most of my Lisp experience has been. But in Scheme it is "define". -David
