实数与整数的SML幂运算

实数与整数的SML幂运算,sml,smlnj,exponent,Sml,Smlnj,Exponent,我写了一个函数,它用基数b和指数e进行幂运算,如下所示: fun power b e = if e = 0 then 1 else b * power b (e-1); 显然,这对整数有效,如输出所示: val power = fn : int -> int -> int 但是,我希望它取一个实数表示b,取一个整数表示e。我尝试使用以下方法: fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-

我写了一个函数,它用基数b和指数e进行幂运算,如下所示:

fun power b e = if e = 0 then 1 else b * power b (e-1);
显然,这对整数有效,如输出所示:

val power = fn : int -> int -> int
但是,我希望它取一个实数表示b,取一个整数表示e。我尝试使用以下方法:

fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-1);

但这给了我错误。感谢您的帮助。

为以后遇到同样问题的其他人提供帮助:

你必须强制函数返回一个实数,然后返回一个实数

返回:

val power = fn : real -> int -> real

fun power b e=如果e=0,则为1.0,否则b*power b(e-1)也可以工作。
1.0
real literal对于SML的类型推断来说已经足够了。考虑到这一点,
:real
是多余的(尽管无害)。顺便说一句,如果您真的要实现这一点,您可能希望使用,而不是线性乘以
b
e
val power = fn : real -> int -> real