lilypond-user
[Top][All Lists]
Advanced

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

Re: Migrating from commercial music notation software to free alternativ


From: David Kastrup
Subject: Re: Migrating from commercial music notation software to free alternative
Date: Wed, 12 Jun 2019 21:41:06 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

address@hidden writes:

> On Wed, 12 Jun 2019, David Kastrup wrote:
>> > nor conceptually TeX-like, despite the fact that it uses backslashes.
>>
>> It's a batch processing system with plain text input syntax.  That makes
>> for workflows not unaccustomed to LaTeX users.  By the way, it did
>
> LaTeX users are accustomed to writing macros in a Turing-complete language
> with, for instance, if statements.

LaTeX or TeX users?

> LilyPond has no equivalent concept to TeX macros: variable values in
> LilyPond are data, not code,

Uh, LilyPond's extension language is Scheme, and Scheme has even less of
a distinction between code and data than its ancestor Lisp (which at
least has separate function and value cells for symbols, as opposed to
Scheme).

TeX's macros are so peculiar because they rely on ad-hoc macro argument
matching and "catcode"-based input interpretation, and very lazy
expansion of a separate "mouth" layer.  Basically you have the
cooperating proverbial blind "stomach" (that cannot evaluate
conditionals and make decisions) and the lame "mouth" (that cannot
change the value of variables) executing with loose synchronization, but
you need both to run, say, a loop.

It's really TeX that is the odd system out here.  LilyPond is quite more
"conventionally" tied into Scheme as extension and programming system.

> and are completely evaluated when parsed and assigned.  They always do
> exactly the same thing every time subsequently invoked, and cannot
> contain real conditionals or parameterized behaviour.  All the
> programming-language functionality in LilyPond is shifted into "music
> functions" that can be applied to the dead data, but never used inline
> if they are to retain their programmable behaviour.

I am not sure what you want to be saying here, and if I am unable to
figure out what you mean, chances are slim that someone who does not
even know LilyPond can.

> Complete evaluation at parse time makes programming a much different
> experience, and not one likely to be familiar to a TeX or LaTeX user.

-- 
David Kastrup



reply via email to

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