Sean O'Dell said:
>> If you can rebind a symbol then you have states and side-effects...
> If the symbol is local to a function, what side-effect could there be?

One of the benefits of functional languages is the ability to do
algebraic-like manipulations of the source code ... kinda like provably
correct refactorings.  For example, given X=12, within the scope of X I
can replace all occurances of X with the value 12 (or the reverse, replace
all occurances of 12 with X).  If X is sometimes 12 and sometimes 13, then
the substitution is no longer valid anywhere in the scope of X.  That is
why even local variables are immutable in a "pure" functional language.

> No, functional languages are not supposed to have
> operators.  That's why they're called "functional languages"; they work
> like functions.

Function being defined as an operation that returns the same result given
the same input, right?  Operators in functional languages are functions in
this sense.  The difference is a matter of syntax, not semantics.  E.g. 
1+2 is allowed in a functional language.  The binary operator + is treated
as a two argument function.

-- 
-- Jim Weirich     jim / weirichhouse.org    http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)