"Yu-Teh Shen" <[EMAIL PROTECTED]> 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. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe