【问题标题】:SML exponentiation of real with integer实数与整数的 SML 求幂
【发布时间】:2017-04-04 09:16:34
【问题描述】:

我写了一个用底数 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);

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

【问题讨论】:

标签: sml smlnj exponent


【解决方案1】:

为以后遇到相同问题的其他人提供:

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

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

返回:

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

【讨论】:

  • fun power b e = if e = 0 then 1.0 else b * power b (e-1); 也可以。 1.0 真正的文字足以暗示 SML 的类型推断。鉴于此,:real 是多余的(尽管无害)。
猜你喜欢
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
相关资源
最近更新 更多