实数与整数的 SML 取幂

Dar*_*olt 3 sml smlnj exponent

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

fun power b e = if e = 0 then 1 else b * power b (e-1);
Run Code Online (Sandbox Code Playgroud)

显然,这适用于整数,如输出所示:

val power = fn : int -> int -> int
Run Code Online (Sandbox Code Playgroud)

但是,我希望它为 b 取一个实数,为 e 取一个整数。我尝试使用以下内容:

fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-1);
Run Code Online (Sandbox Code Playgroud)

虽然这给了我错误。任何帮助表示赞赏。

Dar*_*olt 5

为将来遇到相同问题的其他人提供:

你必须强制函数返回一个实数,并为then情况返回一个实数。

fun power b e : real = if e = 0 then 1.0 else b * power b (e-1);
Run Code Online (Sandbox Code Playgroud)

返回:

val power = fn : real -> int -> real
Run Code Online (Sandbox Code Playgroud)