[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
historical question about CASE
- To: Barry Margolin <barmar@THINK.COM>
- Subject: historical question about CASE
- From: SOLEY@XX.LCS.MIT.EDU
- Date: Fri, 05 Jun 1987 20:11:00 -0000
- Cc: common-lisp@SAIL.STANFORD.EDU, Sandra J Loosemore <sandra%orion@CS.UTAH.EDU>
- In-reply-to: Msg of 5 Jun 1987 14:41-EDT from Barry Margolin <barmar at Think.COM>
Date: Friday, 5 June 1987 14:41-EDT
From: Barry Margolin <barmar at Think.COM>
To: Sandra J Loosemore <sandra%orion at cs.utah.edu>
Date: Fri, 5 Jun 87 11:19:20 MDT
From: sandra%orion@cs.utah.edu (Sandra J Loosemore)
While porting some code between CL implementations, I got bit . . .
Does anyone remember why it was decided to treat NIL as a list
instead of a symbol in this context?
I don't remember specifically, but I would guess that it is for the
benefit of macros that take a lists of things and turn them into case
clauses. For example:
(defmacro do-something (thing &key allow-list ignore-list complain-list)
`(case ,thing
(,allow-list (frob-thing ,thing))
(,ignore-list nil)
(,complain-list (error "I won't frob ~S!" ,thing))))
Silly Programmer, hacks are for kids. That's no reason.
(defmacro do-something (thing &key allow-list ignore-list complain-list)
(append `(case ,thing)
(if allow-list `((,allow-list (frob-thing ,thing))))
.. etc ..
))
-- Richard