[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: #T, self-evaluation, and NULL-LIST =? FALSE.

    ...  But these days I prefer disjoint domains, even if increased
    code clutter results.  In particular, I think boolean, list, symbol,
    and number should all be disjoint domains.  Simplifications like
    this make programs easier to understand and debug, and streamlines
    both the description and the implementation of the language.

Whereas intersecting domains can lead to programs that are easier to
write (the only item not on your list).  APL hackers often use the fact
that true and false are 1 and 0, respectively.  For example, the APL
1-line prime-finder can count divisors just by summing the result of
testing for zero remainders (summing-- not counting!).  Code like this
is indeed tricky to explain and defend, but it is also very easy to write
and reconstruct.

In the hacking days of my youth, I made use of any overlap in functionality
I could find.  (I even found some nice uses for the fact that UCI Lisp
atoms were really lists with a special header!) These days, when most
of the code I write is for tutorial or systems-type purposes, I too prefer
the purer approach to language design, as exemplified by T. I'd like
to think that I've seen the light, but it may just be a change in what
I have to do.