>> Haskell tries to be pure, but as it also aims to support imperative
>> programming, it is no longer purely functional.
>I'm curious. Could you explain exactly what features of Haskell
>you think render claims of 'pure functionality' false?
The standard example would be IO.
In contrast to the context-free program transformations that correspond
to the evaluation of function applications, the program transformations
that correspond to the execution of IO-operations are context-sensitive
(after all, the whole purpose of doing IO is to interact with the
program's runtime context).
So, in addition to functional programming, Haskell also supports a style
of interactive programming based on action descriptions that are
returned to the calling environment for execution. Therefore, I listed
Haskell as not purely functional (the combination has been dubbed
imperative functional programming). I listed it as a pure functional
language, though, because IO is integrated into the language in such a
way as to preserve referential transparency.
Claus