[Haskell-cafe] Why?
Stephen Tetley
stephen.tetley at gmail.com
Thu Dec 10 07:46:10 EST 2009
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-haskell/index.htm
"Why purity?" / Why not?
Best wishes
Stephen
More information about the Haskell-Cafe
mailing list