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

Reply via email to