[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
A simple question
- To: David C. Plummer <DCP@QUABBIN.SCRC.Symbolics.COM>
- Subject: A simple question
- From: Robert W. Kerns <RWK@YUKON.SCRC.Symbolics.COM>
- Date: Thu, 23 Apr 87 21:09 EDT
- Cc: Russ Smith <smith@NRL-AIC.ARPA>, firstname.lastname@example.org, spears@NRL-AIC.ARPA
- In-reply-to: <870423155440.5.DCP@KOYAANISQATSI.S4CC.Symbolics.COM>
Date: Thu, 23 Apr 87 15:54 EDT
From: David C. Plummer <DCP@QUABBIN.SCRC.Symbolics.COM>
Page 73 says several things. It says NULL returns true if the argument
is (). To me at least, this implies NULL is used for flow/predicate and
not for value. It goes on to say that NULL is the same as NOT. NOT
(page 82) explicitly says NOT returns T or NIL. It also says NULL is
the same as NOT. If you believe in transitive closure, one would
conclude that (null (null something)) returns strictly T or NIL. Poor
programs may be broken by this; better programs never use (null (null
...)) but instead express the better intent (not (null ...)).
Personally, I would consider (null (null ...)) to be "an error" and that
the compiler for the Sun should be able to get away with returning the
inner argument. Things get worse when you separate nil and ().
I disagree; after all, NOT is the same as NULL.
(NOT (NULL <something)) has long been an idiom for
"always return T or NIL".
I'll bet the Sun compiler does the same thing for
(NOT (NULL <something>))?