如何在 sml 中将柯里化函数的输入声明为真实的?

How to declare inputs of a curried function as real in sml?

这是我的柯里化阶乘函数代码,我希望输出是真实的

fun pow(x:real) (n:real)= if (n=0.0) then 1.0 else x:real*pow(x:real) (n-1:real) ;

但是我的语法真的错了我该如何解决这个问题?

我想你想要的是:

fun pow x n =
  if n = 0
  then 1.0
  else x * pow x (n - 1)

或者,如果您想更明确地了解类型:

fun pow (x : real) (n : int) : real =
  if n = 0
  then 1.0
  else x * pow x (n - 1)

即:

  • 我认为您希望 nint 类型,而不是 real 类型。 (你的方法只有在 n 是一个非负整数时才有意义,否则递归将永远进行下去。)
  • 你不需要到处都是:real-s;他们不添加任何东西,因为编译器可以推断类型。