[LISPWORKS][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


Issue EVAL-WHEN-OBSOLETE-KEYWORDS Writeup

Forum:		Public Review

Issue: EVAL-WHEN-OBSOLETE-KEYWORDS

References: Moon's public review comment #2 (X3J13/92-3202)

EVAL-WHEN

Issue EVAL-WHEN-NON-TOP-LEVEL

Category: CHANGE

Edit history: 20 Dec 1992, Version 1 by Loosemore

08 Jan 1993, Version 2 by Loosemore (comments from Moon)

12 Sept 1993, Version 3 by Loosemore (add second proposal)

Status: Proposal REMOVE-OLD-KEYWORDS failed 3-6-0, March 1993

Proposal X3J13-MARCH-1993 passed 6-1, March 1993

Problem description:

The language in draft 12.24 about the relationship between

the new EVAL-WHEN keywords :EXECUTE, :COMPILE-TOPLEVEL, and

:LOAD-TOPLEVEL and the old, deprecated keywords EVAL, COMPILE, and

LOAD is confusing. (For example, it's inconsistent about what

EVAL means when not at top level.) The compatibility argument

for retaining two sets of keywords with slightly different

meanings is outweighed by the resulting confusion.

Proposal (EVAL-WHEN-OBSOLETE-KEYWORDS:REMOVE-OLD-KEYWORDS):

Eliminate all mention of the old keywords EVAL, COMPILE, and LOAD

in connection with EVAL-WHEN.

Proposal (EVAL-WHEN-OBSOLETE-KEYWORDS:X3J13-MARCH-1993):

Generalize the use of the old keywords; define that eval-when always

treats eval the same as :execute, compile the same as :compile-toplevel,

and load the same as :load-toplevel.

Rationale:

Adopting this suggestion would shorten the specification and remove

an inconsistency. There are so many incompatibilities between

CLtL1, CLtL2, and the draft standard that it's pointless to try to

allow for a modeless implementation that is simultaneously compatible

with all of them.

Current practice:

Moon says he's not aware of any implementations whose current releases

don't support the new keywords.

Cost to implementors:

Probably small; implementations could continue to support the old

keywords as an extension.

Cost to users:

This is an incompatible change, but one that is easy to detect. A

good implementation should complain about unrecognized EVAL-WHEN

keywords, anyway.

Aesthetics:

Making the standard simpler is a good thing.

Editorial impact:

The dictionary entry for EVAL-WHEN is the only place affected.

(The discussion of EVAL-WHEN in the concept section relating to

file compilation uses the new keywords exclusively.)

Discussion:

Moon says:

I like EVAL-WHEN-NON-TOP-LEVEL:REMOVE-OLD-KEYWORDS (version 1).

Moon suggested (in his public review comment) that another way to

resolve this problem would be to define the behavior of the old

keywords to be exactly the same as that of the new keywords.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.