From: Carl Klapper
Subject: Re: FALSE vs empty list
Date: 
Message-ID: <1646@oravax.UUCP>
In article <·······@otter.hpl.hp.com>, ···@otter.hpl.hp.com (Steve Knight) writes:
> If you are happy applying boolean operators to lists and list operators to
> booleans, then you will have little inclination to change.  You may even
> enjoy the conciseness of idioms such as
>     (car (or (member x L1) (member x L2) '(())))
> which exploit the conflation of lists and booleans.

or even ...

  (defvar list-where-found nil)

  (defun member-note-list (x l)
    (let ((member-list (member x l)))
      (when member-list
	    (setq list-where-found l)
	    member-list)))

   (setf (car (or (member-note-list x L1)
                  (member-note-list x L2)
		  '(())))
	 list-where-found)

   (and (member-note-list x L3) (member-not-list x list-where-found))

which exploit the execution sequences of OR and AND.

Clearly, lisp booleans and boolean operators diverge from mathematical
booleans and boolean operators.

BTW, my preferences for TRUE and FALSE are :

	TRUE 		#s(AND :ARGS NIL)
	FALSE		#s(OR :ARGS NIL)

+-----------------------------+--------------------------------------------+
|  Real urbanites don't buy   | Carl Klapper				   |
|  things. They buy service.  | Odyssey Research Associates, Inc.	   |
|                             | 301A Harris B. Dates Drive		   |
|  A kitchen's place is       | Ithaca, NY  14850			   |
|  in the restaurant.         | (607) 277-2020				   |
|                             | ···················@cu-arpa.cs.cornell.edu |
+-----------------------------+--------------------------------------------+