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
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to