
Hello All Paul Hudak's 'Conception, evolution, and application of functional programming languages' gives an account of the motivations, as its only available to ACM members, here are some lengthy quotes: "At least a dozen purely functional languages exist along with their implementations. The main property that is lost when side effects are introduced is referential transparency; this loss in turn impairs equational reasoning..." "Thus the analogy between goto-less programming and assignment-free programming runs deep. When Dijkstra first introduced structured programming, much of the programming community was aghast-how could one do without goto? But as people programmed in the new style, it was realized that what was being imposed was a discipline for good programming not a police state to inhibit expressiveness. Exactly the same can be said of side-effect free programming, and its advocates hope that as people become more comfortable programming in the functional style, they will appreciate the good sides of the discipline thus imposed. "When viewed in this way functional languages can be seen as a logical step in the evolution of imperative languages-thus, of course, rendering them nonimperative. On the other hand, it is exactly this purity to which some programmers object, and one could argue that just as a tasteful use of goto here or there is acceptable, so is a tasteful use of a side effect. Such small impurities certainly shouldn’t invalidate the functional programming style and thus may be acceptable." http://portal.acm.org/ft_gateway.cfm?id=72554&type=pdf The History of Haskell paper has less account of the motivations, but notes some drawbacks, and gives an advantage: "The purity of the language removed a significant technical obstacle to many type-system innovations, namely dealing with mutable state." http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-hask... "Why purity?" / Why not? Best wishes Stephen