[Haskell-cafe] Laziness question
Dan Doel
dan.doel at gmail.com
Sun Aug 1 11:00:43 EDT 2010
On Sunday 01 August 2010 10:52:48 am Felipe Lessa wrote:
> On Sun, Aug 1, 2010 at 11:29 AM, Nicolas Pouillard
>
> <nicolas.pouillard at gmail.com> wrote:
> > Finally maybe we can simply forbidden the forcing of function (as we do
> > with Eq). The few cases where it does matter will rescue to
> > unsafeSeqFunction.
>
> What's the problem with
>
> class Eval a where
> seq :: a -> t -> t
>
> instance Eval b => Eval (a -> b) where
> seq f = seq (f undefined)
>
> It would reduce at least to WHNF as unsafeSeq would. Does it compute
> more than WHNF?
>
> Hmmm, I see, if we had
>
> f :: Int -> Int
> f _ = undefined
>
> Then my seq above would diverge while unsafeSeq wouldn't. Perhaps
> that instance would be a good compromise if we insist in not using
> 'unsafeSeq' to define it.
It also diverges for every strict function f.
seq id x = seq (id undefined) x = seq undefined x = undefined
-- Dan
More information about the Haskell-Cafe
mailing list