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