[asdf-devel] Make the CL syntax predictable

Faré fahree at gmail.com
Mon Mar 17 04:45:56 UTC 2014

On Sun, Mar 16, 2014 at 11:18 AM, Robert P. Goldman <rpgoldman at sift.info> wrote:
> 1.  A clear proposal for this modification be made.  Right now the
> details of the proposed modification are wrapped in a fairly opaque
> discussion.  The discussion is framed in terms that are either too vague
> "Make the CL syntax predictable" or too specific -- very particular
> proposals about how variables will be bound.  By now the discussion is
> also "protected by volume" against people who want to join the
> discussion, but weren't parts of it from the beginning.
I opened this bug with links to the current discussion on gmane:

> 2.  The proposed change should be modified to operate only in a "strict
> mode", allowing existing legal CL code to continue to work.
Agreed, and until the dust settles, "strict mode" cannot be the default.
I'd argue it should become the default eventually (i.e. next year).

> I propose
> that individual systems be allowed to proclaim that they should be
> operated on in strict mode, or cannot be used in strict mode.
> "strict mode" would be available as a local declaration: a system could
> specify that it should be compiled and loaded with readtable hygiene,
> and that would *always* happen when it is operated on.
> The library user would also be allowed to specify a global strict mode
> setting, and this setting would be applied in some way like the
> following (this is a tentative proposal):
> a.  systems that do not specify strict or non-strict mode would be
> compiled in strict mode if the user so specifies.  This would lead to
> errors in some cases, but they would be errors that the user wants to see.
> b.  If the caller specifies strict mode, it will be an error to depend
> on systems that want to be compiled in non-strict mode.  This would
> achieve the safety that you wish to see.
Unhappily, strict mode is a global flag: the question is "which
readtable is this system going to be read with?". The only reasonable
answer is: the readtable it was meant to be read with, which the
author knows, and should be the standard readtable by default, unless
explicitly overridden by the author. The backward-compatible (if it's
not backward, it's not compatible) is "whichever readtable was active
at the time", with sometimes comical consequences, especially when the
user was using a non-standard one at the REPL.

> 3.  Getting this right will require much testing and experimentation.
> It will not appear in the next ASDF release.
Indeed, this is not 3.1.1 material at all. Hopefully, disabled by
default, for 3.1.2, and enabled in a year in 3.2.1 — or whatever you
call the next releases.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
I hold that America, Champion of the World is a betrayal of
its humble beginnings as One Nation Underdog.

More information about the asdf-devel mailing list