Subject: Re: Why is this code broken?
From: Erik Naggum <erik@naggum.net>
Date: Mon, 10 Jun 2002 12:19:34 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3232700368298991@naggum.net>

* Adam Warner
| Paul my expectations are not on trial here.

  Yes, they are.

| Tell me how many newbies to Lisp expect a variable assigment to
| effectively create a constant.

  It is the value that is a constant, not the variable.  You let the
  variable contain (a pointer to) a constant value.  You may modify the
  variable as much as you want, but not (components of) the constant value.

| It seems that this distinction has come about to assist compiler
| optimisation.

  Only to you.

| How does that create an intuitive expectation?

  Good intuition is a result of paying attention and thinking.  Ignorant
  arrogance very seldom produces good intuition.

| Python will [...]

  Sure, and smart people have figured this out.  Comparing irrelevant
  comparends¹ benefits nobody, however.  This is _not_ Python.

| I would expect to quickly learn and understand how to fix the error if
| the compiler signalled the error when it was made.

  Common Lisp is generally made for people who (want to) know what they are
  doing.  It is not an _error_ to do what you have done.  On the contrary,
  it may be the intended effect and it may be supported in the environment.
-------
¹ this should be a word.
-- 
  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.

  70 percent of American adults do not understand the scientific process.