let curried_add be (x:int) => (y:int) => x+y in let fib2 be (* Given n>0, returns the pair containing fib(n) and fib(n-1) *) rec g(n:int):int*int => (n == 1) ? (1,1) : let p be g(n-1) in let n1 be (fst p) in let n2 be (snd p) in (n2, curried_add n1 n2) in let fib be (n:int) => (n == 0) ? 1 : (snd (fib2(n-1))) in fib 6