Alexander Solla wrote:
And denotational semantics is not just nice. It is useful. It's the best
way to understand why the program we just wrote doesn't terminate.
Denotational semantics is unrealistic. It is a Platonic model of
constructive computation. Alan Turing introduced the notion of an "oracle"
to deal with what we are calling bottom. An oracle is a "thing" that
(magically) "knows" what a bottom value denotes, without having to wait for
an infinite number of steps. Does Haskell offer oracles? If not, we
should abandon the use of distinct bottoms. The /defining/ feature of a
bottom is that it doesn't have an interpretation.
Huh? I don't see the problem.
Introducing bottom as a value is a very practical way to assign a
well-defined mathematical object to each expression that you can write
down in Haskell. See
http://en.wikibooks.org/wiki/Haskell/Denotational_semantics
It's irrelevant whether _|_ is "unrealistic", it's just a mathematical
model anyway, and a very useful one at that. For instance, we can use it
to reason about strictness, which gives us information about lazy
evaluation and operational semantics.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe