[Haskell-cafe] The values of infinite lists
brianh at metamilk.com
Tue May 23 15:41:40 EDT 2006
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.
More information about the Haskell-Cafe