Hi James,
On 20.09.2010, at 15:20, James Andrew Cook wrote:
>> Lazyness helps helps to reduce work if your input list is lazily constructed
>> and your function forces the returned element. Then you don't have to force
>> all elements of the list, only the last one. Let's say l = [e_0, ..., e_n].
>> All the e_i are expensive calculations.
>>
>>> g :: [a] -> a
>>> g xs = x `seq` x
>>> where
>>> x = head (reverse xs)
>>
>
> Can "x `seq` x" have any different strictness than just plain x? I may be
> wrong, but I don't think so. Essentially, it's saying that "when x is
> needed, evaluate x to WHNF and then return x".
Yes, I think you are right. I was trying to force evaluation of the returned
element. Something like that:
> {-# LANGUAGE BangPatterns #-}
>
> g :: [a] -> a
> g xs = x
> where
> !x = head (reverse xs)
-- Jean_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe