
On 2006-03-29 at 18:34+0200 Wolfgang Jeltsch wrote:
Am Freitag, 24. März 2006 14:40 schrieb John Hughes:
[...]
Thirdly, the laws one loses are "nearly true" anyway, and that's very often enough. See "Fast and loose reasoning is morally correct", POPL 2006. We don't need to give up anything to make reasoning *as though* such laws held sound, in most cases.
I will probably have a look at this paper. Nevertheless, I feel uncomfortable with the fact that something that isn't a monad claims to be a monad, etc. Maybe we should rename seq to unsafeSeq or something similar.
Or do what I suggested in http://www.haskell.org//pipermail/haskell-prime/2006-March/001120.html <26869.1143633002@calligramme.charmers> and make seq a pragma. It really doesn't matter that pragmas in C are optional: we don't have to follow that. If we don't like calling these non-optional pragmas by that name, we can think of another, but I'm sure that seq (a) doesn't belong as a function, (b) is essential, and (c) is made too fiddly if it's in a class, so the best way is to use some form of syntax to distinguish them from ordinary functions. It certainly seems to me that we need a method of adding operational annotations while leaving the denotation unchanged (or at least replacing it with something ⊑ it), and that such annotations shouldn't masquerade as functions. I'm also curious to know what people currently involved in implementation think of STEP. Jón -- Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk