Alan Manuel Gloria:
> Looks like you overlooked this e-mail:
You're right, sorry about that. Thanks for pointing that out.
> Here's another bit that seems a bit confusing...
>
> The approach does allow references to variable names with “-”
> embedded in them without effort,
> but the names must be spelled differently (and thus inconsistently)
> by replacing every “-” with “_”.
> Thus, variables like “list-ref” must
> be spelled as “list_ref” inside the infix.plt notation
> without effort.
>
> In particular the last "without effort" there seems to be something
> that got left behind in some edit.
>
> I also think that the bit "The approach does allow references to
> variable names with '-' embedded in them without effort," should be
> "little effort" instead, as it's not actually *without* effort, users
> having to translate - to _ after all.
>
> --
>
> At the very least, it seems the bit "must be spelled as 'list_ref'
> inside the infix.plt notation without effort." doesn't seem to scan
> well. I'm not sure what you mean here by the "without effort" clause;
> I suspect it's a mistake, but maybe you meant something else?
Hmm. Okay, let's start with a discussion about what's *documented*, and then clarify the ramifications of the undocumented and useful |...| notation. That may make things clearer. Here's my attempt:
=================================================
Many variables and operators are more difficult to refer to
and/or must be spelled differently (and thus inconsistently).
Its documentation states that
identifiers (which are also used for function names) must
“begin with a letter, and is optionally followed by series of letters,
digits or underscores. An underscore is converted to a -”.
Under these rules, it is not possible to call procedures with names like
“<samp>char=?</samp>” or use variables
with “*” embedded in them.
It does allow references to variable names with “-”
embedded in them, but in this approach
names must be spelled differently (and thus inconsistently)
by replacing every “-” with “_”.
Thus, variables like “list-ref” must
be spelled as “list_ref” inside the infix.plt notation
as documented.
The infix.plt documentation did not, at the time of this writing,
document any way around this limitation.
However, on 2012-10-21,
Jens Axel Søgaard reported that other identifiers <em>can</em>
be referred to using the |...| syntax.
This works around the problem, but is slightly more cumbersome when
it is necessary, and is inconsistent with other code where |...|
is not required.
These are fundamental side-effects of not <em>requiring</em> infix operators
to be delimited (e.g., by whitespace).
Since some symbols must be escaped with |...| inside infix.plt, yet they
do not need to be escaped otherwise, this is an inconsistency, and this
inconsistency can lead to potentially hard-to-find errors.
======================================================
--- David A. Wheeler