tinn...@isbd.co.uk wrote: > I think there may be another issue here. If someone says "functional > programming" to me then I would generally assume that they *do* mean > "programming using functions".
Strictly speaking you are correct, "functional programming" does mean "programming using functions", the usual name for which is "procedural programming". But it means more than that: functions in the sense of mathematical functions, not merely sub-routines. http://en.wikipedia.org/wiki/Functional_programming Merely using functions is not the same as functional programming. > While your distinction of the two may > be strictly correct I don't think it's the generally accepted meaning. On the contrary, "functional programming" specifically refers to languages derived from, based on, or at least inspired by, the ideas of Alonzo Church's lambda calculus. It should be understood as somewhat in opposition to the idea of imperative programming, where the programmer gives instructions for changing program state. http://en.wikipedia.org/wiki/Programming_paradigm In practice, there are degrees of purity: strictly speaking, a purely functional language would be impractical, because it would have no I/O and therefore not be very useful. But generally, functional programming implies: - all coding is done using functions - functions are first-class data values - higher-order functions are used (functions which take functions as arguments) - no global variables - all data is immutable (cannot be modified) - functions should always return the same result each time they are called with the same arguments (so-called "referential transparency") - computations should be performed lazily as needed - no side-effects other than those caused by hardware limitations (e.g. there is only a finite amount of memory available), usually with an exemption made for I/O - use of recursion instead of imperative features such as iteration (for loops, while loops, etc.) Pure functional programming languages enforce those conventions as design features, rather than just leaving it up to the coder to apply them as a convention. Impure functional languages, such as Python, don't enforce all (or even any) of those conditions, although they may provide certain functional features. -- Steven -- http://mail.python.org/mailman/listinfo/python-list