Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!ames!zodiac!ZOOKS.ADS.COM!rar From: rar@ZOOKS.ADS.COM (Bob Riemenschneider) Newsgroups: comp.lang.lisp Subject: Overloading of NIL (as empty list and logical falsity) Message-ID: <8903222013.AA00234@zooks.ads.com> Date: 22 Mar 89 20:13:34 GMT Sender: daemon@zodiac.UUCP Lines: 19 => The problem is that NIL could conceivably mean both failure of => unification (i.e. FALSE) and also the empty variable substitution. => I know how to get around this problem, but it struck me that => maybe the overloading of the symbol NIL as both logical falsity => and also the empty list as is common in Lisp might not be such a => good idea. => => I know that texts like Winston and Horn tout this as an advantage, => but I'm not so sure. If () was distinct to NIL (= FALSE) then => my little unifier would be a lot clearer to read. => => Of course, some list manipulation programs would be more complex. ... Scheme avoids the complexity by counting () as false, in the same sense that Common Lisp treats everything other than () as true. (But R3RS allows #f and () to be identical, so not every dialect provides a solution to your original problem.) -- rar