On Thu, 2008-11-20 at 15:33 -0800, Don Stewart wrote: > duncan.coutts: > > I don't think I'm just speaking for myself when I say that pseq is > > confusing and the docs similarly. > > > > Given the type > > > > a -> b -> b > > > > we would assume that it is lazy in it's first arg and strict in the > > second. (Even in the presence of seq we know that it really really must > > be strict in it's second arg since it returns it or _|_ in which case > > it's still strict). > > > > Of course we know of the seq primitive with this type that is strict in > > both. However we also now have pseq that has the _opposite_ "static" > > strictness to the original expected strictness. > > Could you state "static" strictness as a StrictCheck property? > I'm not quite sure what this distinction means, actually.
Note that you could make the actual and declared strictness match each other more closely by defining pseq to have the type: pseq :: a -> b -> (# b #) Now it's clear that it returns the second argument unevaluated. Of course that'd be a lot less convenient to use. Duncan _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
