Paul Hudak wrote:
Hi Claus --
I think that you're asking for a semantics of the entire OS, i.e. the
entire outside world, and for that I agree that something other than
equational reasoning is needed to reason about it. However, I would
argue that that is outside the mandate of a book on Haskell. But
maybe that's the point -- i.e. others feel otherwise.
My main point it that if we're reasoning about a single Haskell
program (with no impure features), then the entire world, with all its
non-determinism internal to it, can be modelled as a black box --
i.e. a function -- that interacts with the single Haskell program in a
completely sequential, deterministic manner. And for that, equational
reasoning is perfectly adequate.
I think the problem is that to understand something you need a lot more than
just the capability to reason about it.
For example, given laws such as:
x * (y + z) == (x * y) + (x * z)
x + (y + z) = (x + y) + z
I can reason that
x * (y + (z + w)) = (x * y + x * z) + x * w
But this does *not* mean that therefore I *understand* it. I think
understanding is a much deeper process. I have to grapple with the
underlying shape, the gesture, the motion of the symbolic transformation and
really *feel* the lawfulness of it as a profound inner life experience.
So to get back to the question of understanding monads, yes I can reason
about them equationally using pure functions but to understand Haskell I
need to understand how it is situated in my own human experience and my
human experience seems to me to be more than just a deterministic sequential
function of Unique -> Time -> SenseInput.
Regards, Brian.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe