Having trouble writing a power function inStandard Ml. Im trying to write a function called exp
of type int -> int -> int
.
The application exp b e
, for non-negative e
, should return b^e
.
For example, exp 3 2
should return 9. exp
must be implemented with the function compound
provided below. exp
should not directly calls itself. Here is the compound
function, it takes in a value n
, a function, and a value x
. All it does is it applies the function to the value x n number of times.
fun compound 0 f x = x
| compound n f x = compound (n-1) f (f x);
Im having trouble figuring out how to write this function without recursion, and with the restraint of having to use a function that only can use a function with one parameter. Anyone have any ideas of where to start with this?
This is what I have:
fun exp b 0 = 1
| exp b e = (compound e (fn x => x*x) b)
I know that this doesn't work, since if i put in 2^5 it will do: 2*2, 4*4, 16*16 etc.
You could just do this instead I believe
fun exp 0 0 = 1
| exp b 0 = 1
| exp b e = (compound (e - 1) (fn x => b * x ) b);