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


Issue COMMON-FEATURES Writeup

Issue:        COMMON-FEATURES

Forum: Cleanup

References: None

Category: Addition

Edit history: 01-Mar-91, Version 1 by Pitman

Status: For X3J13 consideration

Problem Description:

The Common Lisp dialect defined by this standard needs a feature which

uniquely identifies it in *FEATURES* so that it can be distinguished

from other similar dialects (e.g., those described in CLtL1 and CLtL2).

Proposal (COMMON-FEATURES:SPECIFY):

Specify the following meanings for features:

:CLTL1

An implementation which purports to support a LISP package that

implements Common Lisp according to the 1984 specification

``Common Lisp: The Language'' should place this feature on *FEATURES*.

This feature is -not- precluded by any of the features :CLTL2,

:X3J13, :DRAFT-ANSI-CL, or :ANSI-CL.

:CLTL2

An implementation which purports to support a COMMON-LISP package

that implements Common Lisp according to Steele's 1990 book,

``Common Lisp: The Language, Second Edition'' (CLtL2) should have place

feature on *FEATURES*. This feature -is- precluded by any of the

features :DRAFT-ANSI-CL or :ANSI-CL.

:X3J13

An implementation which purports to support a COMMON-LISP package

that corresponds to some unpublished working draft, or some mix of

features that approximates an expected X3J13 Draft should place

this feature on *FEATURES*.

If this feature appears, :CLTL2 should not appear unless the

implementation is compatible with and includes as a subset, the

dialect described by CLtL2.

:DRAFT-ANSI-CL

If and when this specification has gone out for public review,

implementations which purport to implement the full draft standard

should place this keyword on *FEATURES*.

If subsequent drafts are produced before a final standard, additional

keywords to identify those drafts will be identified at that time.

This feature is precluded by :ANSI-CL unless the draft ANSI specification

and the final ANSI specification are completely compatible.

:ANSI-CL

If and when this specification is approved as an ANSI standard,

implementations which purport to implement that ANSI standard

should place this keyword on *FEATURES*.

:COMMON-LISP

This feature must appear in *FEATURES* for any implementation that

has one or more of the features :X3J13, :DRAFT-ANSI-CL, or :ANSI-CL.

This feature might appear in *FEATURES* for any implementation that

has one or more of the features :CLTL2 and :CLTL1.

Examples:

#+ANSI-CL FOO ;Sees FOO only in an ANSI standard Common Lisp.

#-ANSI-CL FOO ;Sees FOO only in a Common Lisp which is not an ANSI standard.

#+DRAFT-ANSI-CL FOO ; Sees FOO only in a DRAFT ANSI standard Common Lisp.

#+DRAFT-ANSI-CL FOO ; Sees FOO only in a DRAFT ANSI standard Common Lisp.

#+CLTL1 (LISP:REQUIRE ...) ; Sees the (LISP:REQUIRE ...)

;only if CLtL1 compatibility support is available.

Rationale:

Users need this to get a foothold as they try to port between dialects

in transition.

Current Practice:

Symbolics Genera does not have any of these features.

Cost to Implementors:

Very small.

Cost to Users:

None.

Cost of Non-Adoption:

Users will have to figure out `more imaginative' ways of determining

this kind of information which they commonly want to know. In many

cases, they will add features with names like these themselves,

sometimes according to differing criteria, so that if two applications

which follow such a strategy are loaded into the same environment, they

might manage to confuse each other if one adds a feature that it thinks

is not standard and the other intentionally doesn't add the same feature,

only to find that it's there anyway.

Benefits:

See above.

Aesthetics:

Features lists are not really about aesthetics--they're about survival.

But nevertheless, giving a standard meaning to terms which name standard

dialects seems like a plus.

Discussion:

Pitman supports this proposal, but would consider any other reasonable

alternative that addressed the same issues in a serious way.


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