Haskell, bondage-and-discipline and separation-of-concerns programming
Monday, January 8th, 2007Abstract for Haskellers:
This is a long, involved defense of purity, both in terms of what it affords us in terms of power and in how it enforces “good” programming practices.
Haskell is often defined in terms of what it cannot do: variables can’t be changed once declared, the results of IO computations can’t directly be used in functions, execution flow can’t be controlled, etc. While this characterization is strictly correct, it paints a rather ascetic, when not outright negative, outlook of the language that practitioners not only know to be misleading, but also to be the key to the great power latent in functional programming.
We discuss how and why certain “restrictive” features have become succesful in computer programming while others haven’t, and procceed to explain referential transparency and what it affords us. Finally, we conclude that adopting this particular set of “restrictive” features is useful and positive, even in contrast with the experience of non-useful “restrictions” that seem to have common characteristics.
Abstract for non-Haskellers:
This essay explains why Haskell is cool.
<
p>