@@ -4,6 +4,12 @@ import Data.Function
4import Control.Monad.Eff
4import Control.Monad.Eff
5import Debug.Trace
5import Debug.Trace
7+f = mkFn2 $ \a b -> runFn2 g a b + runFn2 g b a
9+g = mkFn2 $ \a b -> case {} of
10+ _ | a <= 0 || b <= 0 -> b
11+ _ -> runFn2 f (a - 1) (b - 1)
8 runFn0 (mkFn0 $ \_ -> trace $ show 0)
14 runFn0 (mkFn0 $ \_ -> trace $ show 0)
9 runFn1 (mkFn1 $ \a -> trace $ show a) 1
15 runFn1 (mkFn1 $ \a -> trace $ show a) 1
@@ -11,4 +17,5 @@ main = do
11 runFn3 (mkFn3 $ \a b c -> trace $ show [a, b, c]) 1 2 3
17 runFn3 (mkFn3 $ \a b c -> trace $ show [a, b, c]) 1 2 3
12 runFn4 (mkFn4 $ \a b c d -> trace $ show [a, b, c, d]) 1 2 3 4
18 runFn4 (mkFn4 $ \a b c d -> trace $ show [a, b, c, d]) 1 2 3 4
13 runFn5 (mkFn5 $ \a b c d e -> trace $ show [a, b, c, d, e]) 1 2 3 4 5
19 runFn5 (mkFn5 $ \a b c d e -> trace $ show [a, b, c, d, e]) 1 2 3 4 5
20+ print $ runFn2 g 15 12
14− trace "Done!"
21+ trace "Done!"