purescript-0.5.4.1: examples/passing/MultiArgFunctions.purs
module Main where
import Data.Function
import Control.Monad.Eff
import Debug.Trace
f = mkFn2 $ \a b -> runFn2 g a b + runFn2 g b a
g = mkFn2 $ \a b -> case {} of
_ | a <= 0 || b <= 0 -> b
_ -> runFn2 f (a - 1) (b - 1)
main = do
runFn0 (mkFn0 $ \_ -> trace $ show 0)
runFn1 (mkFn1 $ \a -> trace $ show a) 1
runFn2 (mkFn2 $ \a b -> trace $ show [a, b]) 1 2
runFn3 (mkFn3 $ \a b c -> trace $ show [a, b, c]) 1 2 3
runFn4 (mkFn4 $ \a b c d -> trace $ show [a, b, c, d]) 1 2 3 4
runFn5 (mkFn5 $ \a b c d e -> trace $ show [a, b, c, d, e]) 1 2 3 4 5
runFn6 (mkFn6 $ \a b c d e f -> trace $ show [a, b, c, d, e, f]) 1 2 3 4 5 6
runFn7 (mkFn7 $ \a b c d e f g -> trace $ show [a, b, c, d, e, f, g]) 1 2 3 4 5 6 7
runFn8 (mkFn8 $ \a b c d e f g h -> trace $ show [a, b, c, d, e, f, g, h]) 1 2 3 4 5 6 7 8
runFn9 (mkFn9 $ \a b c d e f g h i -> trace $ show [a, b, c, d, e, f, g, h, i]) 1 2 3 4 5 6 7 8 9
runFn10 (mkFn10 $ \a b c d e f g h i j-> trace $ show [a, b, c, d, e, f, g, h, i, j]) 1 2 3 4 5 6 7 8 9 10
print $ runFn2 g 15 12
trace "Done!"