On Jan 23, 2007, at 15:50 , Neil Mitchell wrote:

> prove/compute anything you couldn't before. While removing _|_ from
> the language does make some things nicer to reason about, there aren't
> many corners where _|_ really gets in the way that much - seq being
> one of those few corners.

But that is exactly the problem:  `seq` forces _|_ to get into the
way, when it normally doesn't.  So I'm not clear that trying to fit
`seq` into a formalization of Haskell's semantics is the way to go.

Agreed, that was the point I was trying to make :)

You seemed to be suggesting _|_ was "evil" (for want of a more precise
term) in its behaviour with Haskell. As you seem to say now (and I
agree), _|_ is a perfectly useful value, just seq gets in the way.

I think at this point I can finally say what I was trying to grasp at (and missing, although I was in the right ballpark at least):

It seems to me that the notion of reasoning about Haskell programs in terms of category theory works because category theory is in some sense inherently lazy, whereas (for example) formal logic is inherently strict. So the problem with reasoning about `seq` is that it changes/breaks (depending on how you look at it) the model. Now: either one can come up with a way to model strictness in category theory (compare, for example, modeling I/O in pure functional languages by means of monads), or one can accept that forcing strictness requires reasoning via a different model. Either way, `seq` (or strictness in general) is not really "evil". (And neither is _|_.)

--
brandon s. allbery    [linux,solaris,freebsd,perl]     [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon university    KF8NH



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to