deeqSeq proposal

Simon Peyton-Jones simonpj at
Tue Apr 11 07:31:50 EDT 2006

| instance Eval (a -> b) where
|         ....

You could say the same of instance Num Int, because Int is a primitive
type.  But yes, seq on functions is not lambda-definable, and that is
indeed a qualitivative difference between seq and deepSeq I agree.

It's not worth making a meal of this.  All I'm saying is that there are
two distinct decisions
1. Add seqFun :: (a->b) -> c -> c
2. Given (1), one could provide seq via a type-class, or without.  H98
chooses the latter

For deepSeq, (1) doesn't arise, but the same choice arises for (2), and
with the same arguments for and against.  See in particular John
Hughes's impassioned pleas for not changing type signatures "all the way
up" when adding a 'seq'.

I don't think we disagree here.  But equally I don't there's a clear
"right" answer.


More information about the Haskell-prime mailing list