On Thursday 08 July 2004 11:52, Sean Russell wrote:
>
> Incidentally, from the comp.lang.functional FAQ:
>
> "Functional programming is a style of programming that emphasizes the
> evaluation of expressions, rather than execution of commands. The
> expressions in these language are formed by using functions to combine
> basic values. A functional language is a language that supports and
> encourages programming in a functional style."
>
> "Definition: A language that does not allow any destructive
> operation---one which overwrites data---such as the assignment
> operation. Purely functional languages are free of side effects, i.e.,
> invoking a function has no effect other than computing the value
> returned by the function."

May I add: there is "functional programming style" and "functional programming 
language."  Ruby is not really a functional programming language, but you can 
program in a functional style with it.  If you don't maintain state, and 
don't call methods that use stateful data, you are programming in a 
functional style.  Tail recursion optimization and currying are, I believe, 
just implementation features, not really defining properties, of functional 
programming.

	Sean O'Dell