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

* 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.