Functional languages are are unnatural to use; but so are knives and forks, diplomatic protocols, double-entry bookkeeping, and a host of other things modern civilization has found useful. Any discipline is unnatural, in that it takes a while to master, and can break down in extreme situations. That is no reason to reject a particular discipline. The important question is whether functional prgramming in unnatural the way Haiku isunnatural or the way Karate is unnatural.Or this:Haiku is a rigid form poetry in which each poem must have precisely three lines and seventeen syllables. As with poetry, writing a purely functional program often gives one a feeling of great aesthetic pleasure. It is often very enlightening to read or write such a program. These are undoubted benefits, but real programmers are more result-soriented and are not interested in laboring over a program that already works.
They will not acccept a language discipline unless it can be used to write program to solve problems the first time -- just as Karate is occasionally used to deal with real problems as they present themselves. A person who has learned the discipline of Karate finds it directly applicable even in bar-room brawls where no one else knows Krate. Can the same be said of functional programming?
Functional languages, as a minority doctrine in the field of programming languages, bear a certain resemblance to socialism in its relation to conventional capitalist economic doctrine. Their proponents are often brilliant intellectuals perceived to be radical and rather unrealistic by the mainstream, but little-by-little changes are made in conventional languages and economies to incorporate features of the radical proposals. Of course, this never satisfies the radicals, but it represents progress of a sort.A little appreicated role of functional programming, goto-less programming, and other stylish forms of programming is as an indicator of the programmer's morale. When one comes across a program with a rat's nest of gotos, or large amounts of pointer arithmetic, one says to himself "This programmer was barely able to solve the problem he was working on. If he had the intellectual problem well under control, then he could have devoted some of his brainpower to making it look pretty according to generally accepted standards, eg eliminating gotos".