seq as a class method

Jon Fairbairn jon.fairbairn at
Wed Mar 29 11:58:24 EST 2006

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
<26869.1143633002 at 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

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 Fairbairn                              Jon.Fairbairn at

More information about the Haskell-prime mailing list