Subject: Re: Separation in function and value cells (was Re: newbie: please don't smash my case)
From: Erik Naggum <erik@naggum.net>
Date: 2000/07/08
Newsgroups: comp.lang.lisp
Message-ID: <3172064189434540@naggum.net>

* Simon Brooke <simon@jasmine.org.uk>
| I do think that treating functions as different from other data is
| 'stupid', yes

  And just _how_ does Common Lisp do this?  Having two different value
  slots for a symbol is not at all what you describe as stupid.  If
  you are thinking about the need to use the `function' special form
  where (presumably) you would have been happier with regular variable
  access, that is _so_ not the issue.  You can bind a variable to a
  function object any day and funcall it.  Try, you may be shocked.
  If this is the old "I hate funcall" whine, please say so right away
  so I can ignore you completely.

| it leads to all sorts of hacks and kludges and results in no
| benefits that I am aware of.

  Really?  Assuming that we still talk about symbol-function and
  symbol-value, the hysterical need for "hygienic" macros in Scheme is
  _not_ caused by their conflated namespaces?  Come on, now.  Why
  exaggerate your case when there is at lest one _obvious_ benefit
  (and one obvious drawback to the conflating namespaces, namely the
  Scheme experiment).

  The main human benefits are that you don't have to worry about name
  collisions when you define a lexical variable and that you don't
  have to look for all sorts of bindings when reading code.  The main
  compiler benefit is that if you maintain control over what you stuff
  into the symbol-function slot, you don't have to test it for a
  function object every time you use it.

| It is, in my opinion, historical baggage left over from
| implementation details in LISP 1.5.

  And which "implementation details" are you referring to?

| Furthermore, it's clear that many of the most influential people
| in the design of Common LISP are now of the same opinion; for example,
| Richard Gabriel's 1988 paper in _LISP & Symbolic Computation_ on just
| this issue, or some of Scott Fahlman's posts on LISP2 and the design
| of Dylan on this very group in February and March of 1995.

  Yeah, _sure_ I'll trust a _Dylan_ designer to have useful comments
  about Common Lisp.  "I hate this, let's go make our _own_ language"
  people are so full of agendas both hidden and overt that you can't
  take anything they say about the old language seriously.

| However, if you have a different opinion, please feel free to argue
| it.  What benefit is there, beyond having to invoke baroque syntax
| to use a lambda expression, and having to do two operations instead
| of one at every step in a structure walker?

  And what the fuck does lambda expressions have to do with symbol and
  value cells in symbols?

  All of trolling, stupid, and insane, that's my conclusion.

| 	"The result is a language that... not even its mother could 
| 	love.  Like the camel, Common Lisp is a horse designed by 
| 	committee. Camels do have their uses." 
| 				    ;; Scott Fahlman,  7 March 1995

  If you don't like Common Lisp, Simon, you don't have to suffer it.
  There are plenty of other languages out there you can use.  Those
  who have hated parts of the language have gone elsewhere.  Those who
  remain actually _like_ the language, even if this is unfathomable to
  you.  It it also my firm opinion that computer professionals who use
  tools they dislike or hate _are_ insane at best.  (Worse would be
  slavery, criminal incompetence, extremely low self-esteem and other
  results of prostitution, or extreme poverty, all of which remove
  one's ability to choose rationally among the _generally_ available
  options.)  One simply does not choose to use something one hates for
  whatever reasons.  That's why Scott Fahlman went to Dylan, I guess,
  but I know that's why I dropped working with SGML, C++, and Perl.

#:Erik
-- 
  If this is not what you expected, please alter your expectations.