[Haskell-beginners] Fixed Point function
karl at karlv.net
Tue Jan 27 06:24:26 UTC 2015
On Mon, Jan 26, 2015, at 08:43 PM, Animesh Saxena wrote:
> I stumbled across this example as a shiny way of explaining why Lazy
> eval matters....
> fact = fix $ \f n -> if n == 0 then 1 else n * f (n-1) fix f =
> f (fix f)
> With lazy eval, I get
> fact 4 = fix $ \f 4 (......)
Not quite. Let's go one step at a time:
fact 4 = (fix $ \f n -> if n == 0 then 1 else n * f (n - 1)) 4
Now we can bring in the definition of fix, substituting the argument to
fix for all of the occurrences of f in the definition of fix. Notice
that we can't substitute the 4 for n yet.
fact 4 = ((\f n -> if n == 0 then 1 else n * f (n - 1)) (fix $ \f n ->
if n == 0 then 1 else n * f (n - 1))) 4
I think if you are very patient and methodical about performing the
substitutions (and writing them out fully - no dot-dot-dot), then you'll
figure out how it all works.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners