[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: CL-SUBSETS@SU-AI.ARPA*Subject*:*From*: REM*Date*: Sat, 08 Dec 1984 13:25:00 GMT

from: brown@DEC-HUDSON The main thing I think is that the subset should be a true subset; i.e. a program that is written purely in the subset is gaurenteed to work in an implementation of full language. I believe this requires that the subset be lexically scoped. [I disagree with that conclusion. There are several ways that one LISP can be a subset of another: (1) it can be missing some of the functions, (2) it can be missing some of the datatypes, (3) some of the functions can know about and be able to handle fewer of the kinds of situations, be less flexible, have fewer options, (4) some of the overall mechanisms can be less capable. These are mostly but not totally orthogonal. ACOSH and ASINH can be missing even if floating point and complex values are available, thus having the datatype doesn't imply all the functions to handle it are around. The converse, ASINH and ACOSH are available but they don't handle floating point, is probably impossible in CL. Thus they are orthogonal in one direction. Ratios might not be implemented, which would mean that READ would have to bomb out if it encountered the syntax for a ratio, and division of integers couldn't be implemented in all cases either. Thus there is some linkage between datatypes available and case that READ and / are equipped to handle. Finally, to rebut the assertion claimed above, a subset of CL might not have lexical closures implemented and might work correctly only on programs that have no undeclared free variables, it might even have no optional or rest arguments. A program written in this restricted subset would work fine in full blown CL, with identical semantics. Thus a subset needn't have lexical scoping. -- For the mathematicians, the null language that has no functions and no datatypes, is a subset of CL, and is an obvious counterexample to the claim that any subset of CL must have lexical scoping. But I think there could be reasonable non-null subsets that are easy to implement on small machines or to define in existing systems such as PSL, which don't have lexical scoping yet are true subsets. I think we should be aware of the several dimensions of subsetting, some of which I listed above, and consider all those dimensions when defining a subset, not just what functions are defined. When we define a subset, we should clearly document what functions aren't there at all, what functions are implemented in lesser ways, what datatypes are missing, what features of general code writing are missing (implicit PROGNs, lexical closures, ...), any other differences. Alternately for really drastic subsets just say what the subset is and indicate explicitly in the rare cases when the fullblown version of some function is defined. Anyone agree or disagree or amend?]

- Prev by Date:
**[no subject]** - Next by Date:
**[no subject]** - Previous by thread:
**[no subject]** - Next by thread:
**[no subject]** - Index(es):