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