如何在 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)
即:
- 我认为您希望
n
是 int
类型,而不是 real
类型。 (你的方法只有在 n
是一个非负整数时才有意义,否则递归将永远进行下去。)
- 你不需要到处都是
:real
-s;他们不添加任何东西,因为编译器可以推断类型。
这是我的柯里化阶乘函数代码,我希望输出是真实的
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)
即:
- 我认为您希望
n
是int
类型,而不是real
类型。 (你的方法只有在n
是一个非负整数时才有意义,否则递归将永远进行下去。) - 你不需要到处都是
:real
-s;他们不添加任何东西,因为编译器可以推断类型。