1

每当我定义一个函数说funct(n)时,我可以将n的值分配给不同的变量,例如m,以便我可以将函数内变化的n值与m的初始值进行比较。此外,由于我嵌套了有时独立的其他函数,有没有办法使 m 变量通用?

我所做的是:

fun funct(n)= let val m=n in if (condition) then...

此外,这里funct调用funct1,funct1调用funct2。错误消息读取

Error: unbound variable or constructor: m

对于函数 2

Error: unbound variable or constructor: funct1

对于函数 1

Error: unbound variable or constructor: funct1

对于功能

我想 m 的单次更正将解决整个级联错误。

4

1 回答 1

1

您可以从比定义标识符的范围更深的范围访问任何标识符。例如

fun funct(n) =
  let fun funct1(x, y, z) = if n < 1 then ...
  ...

在此示例中,funct1可以访问n已在外部范围中定义的 (即作为 的参数funct)。

但是要小心,在像 ML 这样的函数式语言中,标识符与像 C 这样的命令式语言中的标识符具有不同的含义。在您的示例中,n并且m不是变量,这意味着标识符表示的值不会改变。您只能重新定义标识符;但是,在重新定义之前使用标识符的代码将始终引用该标识符的原始值。

于 2012-10-15T08:40:11.160 回答