如何在sml中将curried函数的输入声明为实数?

问题描述 投票:0回答:1

这是我的咖喱阶乘函数代码,我希望输出为实数

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

但是我的语法真的很错误,我该如何解决?

arguments sml currying smlnj ml
1个回答
0
投票

我认为您想要的是:

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-;它们不添加任何内容,因为编译器可以推断类型。
© www.soinside.com 2019 - 2024. All rights reserved.