OK, in f, *length* already knows it's argument is a list. In g, *length* doesn't know what's inside the parens, extra evaluation there. So g is already ahead before we get to what's inside the [] and ().
But since both still have eval x to *thunk* : *thunk*, g evaluates "to a deeper level?" Michael > Wouldn't both functions need to evaluate x to the same level, *thunk* : > *thunk* to insure listhood? > > f x = length [head *thunk* : *thunk*] > g x = length (tail *thunk* : *thunk*) > > Michael > > > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > Notice the two different kinds of brackets being used in f versus g :) --- On Sat, 7/31/10, Ben Millwood <[email protected]> wrote: From: Ben Millwood <[email protected]> Subject: Re: [Haskell-cafe] Laziness question To: "michael rice" <[email protected]> Cc: [email protected] Date: Saturday, July 31, 2010, 12:38 PM On Sat, Jul 31, 2010 at 4:56 PM, michael rice <[email protected]> wrote: > > From: http://en.wikibooks.org/wiki/Haskell/Laziness > > > Given two functions of one parameter, f and g, we say f is stricter than g if > f x evaluates x to a deeper level than g x > > Exercises > > 1. Which is the stricter function? > > f x = length [head x] > g x = length (tail x) > > > > Prelude> let f x = length [head x] > Prelude> let g x = length (tail x) > Prelude> f undefined > 1 > Prelude> g undefined > *** Exception: Prelude.undefined > Prelude> > > > > So, g is stricter than f? > > Wouldn't both functions need to evaluate x to the same level, *thunk* : > *thunk* to insure listhood? > > f x = length [head *thunk* : *thunk*] > g x = length (tail *thunk* : *thunk*) > > Michael > > > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > Notice the two different kinds of brackets being used in f versus g :)
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
