每当我定义一个函数say 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
for funct2
Error: unbound variable or constructor: funct1
for funct1
Error: unbound variable or constructor: funct1
for funct
我认为m的单次修正可以解决一系列错误。
答案 0 :(得分:1)
您可以访问范围内的任何标识符,这些标识符比定义标识符的范围更深。例如,
fun funct(n) =
let fun funct1(x, y, z) = if n < 1 then ...
...
在此示例中,funct1
可以访问n
,该funct
已在外部作用域中定义(即作为n
的参数)。
但要注意,在像ML这样的函数式语言中,标识符与C等命令式语言中的标识符具有不同的含义。在您的示例中,m
和{{1}}不是变量,意味着由标识符不会改变。您只能重新定义标识符;但是,在重新定义之前使用标识符的代码将始终引用该标识符的原始值。