Subject: Re: On conditionals
From: Erik Naggum <erik@naggum.net>
Date: Thu, 22 Nov 2001 14:27:31 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3215428049135834@naggum.net>

* Kenny Tilton
| What does the compiler say? No Lisp implementation differentiates
| between NIL and '()? So, as I see it, my mental processes should not.

  Is there no difference between (- x) and (1+ (lognot x)), either?
  How about (first x) and (car x)?  Or (ash x 3) and (* x 8)?

| Don't forget, folks, we are engaged in hand-to-hand combat with compilers.

  I have never viewed compilers this way.  Compilers are not the IRS.

| It would be great if some 3GL let us forget about assembly language, but
| in fact every time I want to whack something from a list I must choose
| between delete and remove. Explain to bubba that delete and remove from
| lists are different...no way, you have to talk about implementation, cons
| cells, pointers.

  Huh?  (let ((x '(1 2 3))) (delete 2 x) (equal x '(1 2 3))) => nil while
  (let ((x '(1 2 3))) (remove 2 x) (equal x '(1 2 3))) => t.

| Now to be fair, by saying NIL and '() you are over-specifying, latching
| onto conceptual differences at a finer granularity than the compiler, so
| you are on solid ground. But to me that attitude is dangerous. It relies
| on a fiction. Better to acknowledge the mindset of the compiler, who in
| the end decides the behavior of our so-called high-level code.

  Some of us think the specification for the compiler decides the behavior
  of the compiler.  That some things which produce the same effect but look
  different should be treated differently can be exemplified by "its" and
  "it's" and by "there" and "their" and "they're", both of which for some
  reason do not appear to be distinct to a number of American spellers.

///
-- 
  Norway is now run by a priest from the fundamentalist Christian People's
  Party, the fifth largest party representing one eighth of the electorate.
-- 
  Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.