On Fri, Oct 21, 2011 at 12:38 PM, daly <d...@axiom-developer.org> wrote: [...] > Having used lisp in many different forms over the last 40 years > I think that the "complecting" of nil to represent all three > concepts is one of the most brilliant aspects of the language. > In fact it is one of the key flaws of scheme, in my opinion, > that they added true and false.
Brilliant or clever, with all the downsides cleverness entails? I'm as guilty "punning on nil" as any old Common Lisper, but I have to ask myself, "Is it good or just easy?" > There is a fourth use of nil that is also very convenient. > Lisp functions return it as a default value. This makes it > possible to wrap functions with functions which other languages > like C++ make very difficult. [...] I agree, but that does not justify the (mis)use of nil for other purposes. > The use of nil as a unified value for the many meanings leads > to a lot of useful features. The context of the nil value > completely defines the intended meaning. And now one _must_ provide the context for each use of nil, or, as Kent Pitman said, "Several broad classes of bugs and confusions can be traced to improper attempts to recover intentional type information from representation types." http://www.nhplace.com/kent/PS/EQUAL.html So, now, instead of "littering" code with tests for nil (or perhaps taking that as a cue to eliminate the possibility of nil), one has complected nil and intentional context throughout. Cheers, Mike -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en