Subject: Re: what is false
From: Erik Naggum <>
Date: 10 Dec 2002 19:30:15 +0000
Newsgroups: comp.lang.lisp
Message-ID: <>

* Paul Dietz
| Having (OR 0 0) return T would be in violation of the CL
| specification, and also in violation of what the OR macro has been
| doing in most lisps for decades.  I'd be very surprised if ACL did
| that.

  It was my experience that the version of Allegro CL known as "ACL
  3.0 for Windows" was a very strange version of Common Lisp.  I had
  tried to use it for a project, but when there were so many oddities
  that I spent more time trying to figure out which language it tried
  to implement than to implement my own application, I dropped it.

| In practice most lisps will return T for true in most places; it's
| a shame the standard didn't require this in more places.

  Hm.  I did not follow your reasoning here.  Why is it a shame?  By
  the way, which operators return a `boolean´ as opposed to only a
  "generalized boolean"?  The obvious choice is of course `not´.

| There would be a slight efficiency advantage to having false == 0
| in the usual lisp implementations, since obtaining a nonzero NIL
| for comparisons requires either extra instructions or consumes a
| register.

  If you use a register for `nil´, you can exploit that in ways that
  are quite a lot more beneficial than the savings of using 0.

Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.