[Haskell-cafe] Laziness question

Ben Millwood haskell at benmachine.co.uk
Sat Jul 31 12:38:48 EDT 2010


On Sat, Jul 31, 2010 at 4:56 PM, michael rice <nowgate at yahoo.com> 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
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>

Notice the two different kinds of brackets being used in f versus g :)


More information about the Haskell-Cafe mailing list