Benjamin Franksen writes:

> On Wednesday 04 May 2005 01:32, Ben Rudiak-Gould wrote:
> > This doesn't work in Haskell because Haskell types aren't
> > constructed in this way. It's harder to prove properties of types
> > in Haskell (and fewer properties actually hold).
> 
> Could you explain why this is so? Or rather, what the appropriate
> technique is in Haskell? I assume it has to do with laziness but I
> have no idea how it enters the picture.

I suspect it's because Haskell types are non-strict by default.

Given

    data Nat = Zero | Succ Nat

in a strict language, Succ _|_ == _|_. This is not the case in Haskell.

This isn't the case in Haskell, which is why we can do things like:

    infinity = Succ infinity

Haskell lets you treat infinity mostly as though it were a normal value
of Nat. You can do arithmetic and compare it to finite values without
ever hitting bottom.
-- 
David Menendez <[EMAIL PROTECTED]> <http://www.eyrie.org/~zednenem/>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to