Fwd: [Haskell-cafe] Re: Why?

Alberto G. Corona agocorona at gmail.com
Thu Dec 10 08:50:29 EST 2009

 What material benefit does Haskell derive from being a "pure" functional
language as opposed to an impure one?

Here is my list of benefits of purity (some of them are enhanced by other
features like the type system).

Purity means referential transparency. that means that  the programmer has
no way to modify pure data. That cut the tree of possible programmer
errors.In particular, since there are no variables, every state change must
be in the form o a call to a function with new parameters. each function has
no state change (except when needed and then the type system labels the
stateful code as such)( This enforcement goes in the righ direction for
clarity and readability, maintainability, modularity xxxxxbility.

Purity also eases paralel processing, since no data is modified, each
process is isolated better. Less opportunities for errors.

Purity  permits lazines because since the execution tree of
an expression has pure, data, can be evaluated later, since it will not be

Lazy evaluation eases mathematical reasoning,because mathematics has no
notion of eager evaluation, but to make use of mathematical equations when
the calculation is needed. .

Mathematical reasoning permits the full use of a long tradition of
mathematical knowledge. This makes code more simple, understandable,
general, proof guarantted and elegant (for those that know the mathematical
domain). This also permits high level optimization of code, both by the
programmer and the compiler.

for sure there are a few more

We are superstitious and guided by "nonrational"  ideas such is beauty. but:

bauauty -> (simplicity ->  (less effort to master, less errors)
,                 utility      ->, solve more problems, solve  greater
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091210/d59127c4/attachment.html

More information about the Haskell-Cafe mailing list