[Haskell-cafe] Re: Why purely in haskell?

Achim Schneider barsoap at web.de
Wed Jan 9 09:57:39 EST 2008


"Yu-Teh Shen" <shenyute at gmail.com> wrote:

> I got question about why haskell insist to be a purely FL. I mean is
> there any feature which is only support by pure?
> I mean maybe the program is much easier to prove? Or maybe we can
> cache some value for laziness.
> Could anyone give me some more information about why haskell needs to
> be  pure.
> 
To give a short answer: Because if pureness would be abandoned for easy
implementation of feature X, features Y and Z would become completely
awkward. 

The pureness is an ideological design decision basing on the
assumption that pureness is ideal to ensure whole-system consistency.

Most important is referential transparency, its lack of spooky
side-effects and thus making global memoization of evaluation results
feasible.

In fact, the most obvious point really seems to be that

getChar :: Char
cant' be cached, though its type implies it,

while
getChar :: IO Char
enshures that only the _action_ of getting a char can be cached, not the
char itself. (and asking why and how the IO type does that opens a big
can of worms)

It's along the lines of "a value is an unary, static function that
returns a value" vs. "an input function is an unary, dynamic function
that returns a value" and the proper handling of the terms "static" and
"dynamic" in every possible case.

-- 
(c) this sig last receiving data processing entity. Inspect headers for
past copyright information. All rights reserved. Unauthorised copying,
hiring, renting, public performance and/or broadcasting of this
signature prohibited. 



More information about the Haskell-Cafe mailing list