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