fun expt_int (a, b) = let
fun aux (x, i) =
if i = b then x
else aux (x * a, i + 1)
in
aux (1, 0)
end
fun expt_real (a, b) = let
aux (1.0, 0)
val op ** = expt_int
infix 6 **
val op *** = expt_real
infix 6 ***