[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:
> PROPOSED NEXT STEPS:
>
> 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:
https://bugs.launchpad.net/asdf/+bug/1293325

> 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