Sean O'Dell wrote:

>>>>Probably the most fundamental of all criteria is that the language
>>>>does not allow side-effects, such as assignment.
>>We're OT now, but my ignorance of FP is such that I can't imagine
>>a language without assignment.
> You can have variables in a functional language, but what you can't have are 
> globals that act statefully, causing any functions you write to return 
> different values when passed the same parameter values.  You can have 
> (pseudocoded):

As far as I know LISP does indeed have closures -- and I can emulate 
globals with them in Ruby like this:

call_count = 0
define_method(:hello) do
   call_count += 1
   puts "Hello World ##{call_count}"
end
10.times { hello }

Guys with more LISP-experience than me should correct me in case I'm wrong.

Oh, and about not having side-effects: Most functional languages have 
them when doing I/O.

Regards,
Florian Gross