Sujet : Re: String-Based Macro Systems
De : bluemanedhawk (at) *nospam* invalid.invalid (Blue-Maned_Hawk)
Groupes : comp.lang.miscDate : 13. Apr 2024, 06:09:26
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <pan$5d552$88135a24$abac79c8$4af1fb67@invalid.invalid>
References : 1
User-Agent : Pan/0.154 (Izium; 517acf4)
Lawrence D'Oliveiro wrote:
The big difference with m4 is that it does away with these special
symbols; the mere occurrence of a name matching a defined macro (or an
argument of the macro currently being expanded) is sufficient to trigger
substitution. Do you think this is a good idea?
There are all kinds of pitfalls with such macro systems. The original
Macrogenerator could not cope with substitutions containing unpaired “<
... >” quote symbols, and even GNU m4 lacks something as simple as a
backslash-style “escape next single character, whatever it is”. While m4
lets you switch the quoting symbols, it still insists that they occur in
pairs.
Would adding such an escape character be useful?
Yes, of course.
Whenever a system has a system to escape symbols, there are two ways to go
about it: either the symbol is magic by default, and the escape makes it
normal, or the symbol is normal by default, and the escape makes it magic.
Having both of the systems at once is generally confusing, because it
makes it difficult to remember which symbols are which. It's more
practical to have all of them be one or the other.
One could say that having the symbols only become magic upon escapement is
better, because it clearly indicates when a symbol has magic properties.
This is analogous to the logic used to defend sigils, a form of
disambiguation repeatedly found to be pointless because names already do
that disambiguation. Therefore, the correct choice is magic by default.
One fallacious argument i've heard used to justify magic by default is
that it means that the treatment of the escape symbol itself is consistent
with all the other symbols in that it's magic by default unless escaped by
itself. I consider this fallacious because in a system where magic must
be explicit, the escape symbol would be the _only_ exception, and it would
be _impossible_ to make any others—what i'd say is a worthwhile sacrifice.
Either way, figuring out the solution to the problem of “Magic: by
default or by request?” is almost certainly a lower priority than the
majority of other problems.
-- Blue-Maned_Hawk│shortens to Hawk│/blu.mɛin.dʰak/│he/him/his/himself/Mr.blue-maned_hawk.srht.site(?<sigil> [&*\$\@\%])