Subject: Re: Your introduction to Lisp...
From: Erik Naggum <erik@naggum.net>
Date: Tue, 09 Apr 2002 20:21:32 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3227372509270757@naggum.net>

* Arjun Ray <aray@nmds.com.invalid>
| I am not young, my mind is likely not very malleable, and I have read
| SICP.  Are there any specific Scheme-ish ideas that you would suggest I,
| as a rank beginner in CL, should make it a priority to unlearn?

  Primarily that Scheme has done it the right or only way.

  Scheme is actually a hard language to learn.  It forces you into a
  mindset that is very artificial.  Common Lisp is much less artificial.
  At some point in your learning about some artificial reality, accepting a
  it as if it were real sets in.  Scheme is actually the only programming
  language I have seen this happen with -- it affects people in subtle ways
  that reorient their value system and begin to accept what they hear and
  not what they see.  The same happens to young minds who meet Scientology
  or Objectivism or even Communism unprepared for the multiplicity of what
  might be true, and they start to confuse the fact that something is true
  with everything else being false.  Theories that are so attractive that
  they become _more_ attractive than reality are probably wrong from the
  outset, in some fundamental way.  This notion of "purity", for instance,
  and its associated "elegance", tend to make reality look "dirty" and
  drives people into a weird state of mind.  This is hard to detect from
  the inside, but very easy to detect from the outside.

  If you need a particular example: recursion is not a _generally_ good
  idea, you need to understand how and when Scheme really is iterating, and
  to find iterative expressions of the same forms they use recursions for..
  Calling functions that return functions only to call the return value
  right away is _generally_ not a clear and perspicuous coding style --
  consider binding it to a variable.  An one namespace is simply wrong,
  both in conflating function and variable value and in lacking packages.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.

  Post with compassion: http://home.chello.no/~xyzzy/kitten.jpg