[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ISSUE: VARIABLE-LIST-ASYMMETRY
- To: cl-cleanup@SAIL.Stanford.edu
- Subject: ISSUE: VARIABLE-LIST-ASYMMETRY
- From: Skona Brittain <skona%csilvax@hub.ucsb.edu>
- Date: Tue, 26 Jul 88 16:52:33 PDT
- Cc: skona@csilvax.ucsb
- Posted-date: Tue, 26 Jul 88 16:52:33 PDT
Issue: VARIABLE-LIST-ASYMMETRY
References: CLtL pgs. 110, 122, 131
Category: CHANGE
Edit history: Revision 1 by Skona Brittain 07/26/88
Problem Description:
The symtax of items in the variable-list for various control structues
(do, let, prog and their duals) varies. This variation seems unnecessary.
The allowed variations are indicated in the following chart:
do & do*: (var) (var init) (var init step)
prog & prog*: var (var) (var init) n.a.
let & let*: var (var val) n.a.
Note that just plain var is prohibited in do forms
and that the case of (var) is prohibited in let forms.
Proposal (VARIABLE-LIST-ASYMMETRY:SYMMETRIZE):
Change the variable-list in the syntax descriptions as follows:
do & do*: ( { var | (var [init [step]] ) }* )
let & let*: ( { var | (var [value] ) }* )
Test Cases:
(let (a (b) (c 3)) ... ) would be valid.
(do* (a (b) (c 3)) ... ) would be valid.
Rationale:
The assymetry is unnecessary and impedes learning of CL.
Current Practice:
KCL allows (var) in let
but not var in do.
Cost to Implementors:
Very slight.
Cost to Users:
None.
Cost of Non-Adoption:
The variation in syntax makes them harder to learn.
Benefits:
Ease of learning.
Aesthetics:
Symmetry is more aesthetic than assymetry, at least to some of us.
Discussion: