let power = (* power x y = x^y *) fun f (x:int) (y:int): int => if y = 0 then 1 else if y = 1 then x else if y = 2 then x * x else let t = f (x) (y / 2) in if y mod 2 = 0 then t * t else x * t * t in power 2 10