Functional programming 函数式编程中的自由和绑定标识符

Functional programming 函数式编程中的自由和绑定标识符,functional-programming,oz,mozart,Functional Programming,Oz,Mozart,我对这个问题绞尽脑汁已经有一段时间了,我想不出来了。我读过维基百科和几本书中关于自由变量“自由变量和绑定变量”的定义,但我没有得到正确的答案 考虑以下代码: local A B C=1 D=2 in A = 1 proc {Add E F G} E = A + D + F end end 这些标识符(A、B、C、D、E、F、G)中的哪一个是自由标识符?任何指令的自由标识符都是指令内部出现的标识符,对应于指令外部的声明 因此,答案是A和D。任何指令的自由标识符都是指令内部出

我对这个问题绞尽脑汁已经有一段时间了,我想不出来了。我读过维基百科和几本书中关于自由变量“自由变量和绑定变量”的定义,但我没有得到正确的答案

考虑以下代码:

local A B C=1 D=2 in
  A = 1
  proc {Add E F G}
     E = A + D + F
  end
end

这些标识符(A、B、C、D、E、F、G)中的哪一个是自由标识符?

任何指令的自由标识符都是指令内部出现的标识符,对应于指令外部的声明


因此,答案是A和D。

任何指令的自由标识符都是指令内部出现的标识符,它们对应于指令外部的声明


所以答案是A和D。

自由标识符的概念总是伴随着上下文。如果只考虑语句<代码> e= a+d+f,四个标识符是空闲的。但是,如果考虑过程定义,则E和F现在是绑定的,因为它们是形式参数。因此,自由标识符是A和D。最后,如果考虑到所给出的全部代码,则没有声明所有标识符的自由标识符。 参考资料:彼得·范·罗伊和塞夫·哈里迪的《计算机编程的概念、技术和模型》

第57页和第58页的结尾对这件事很有意思


前三章可在edX平台上使用,如果您注册课程

免费标识符的概念总是带有上下文。如果只考虑语句<代码> e= a+d+f,四个标识符是空闲的。但是,如果考虑过程定义,则E和F现在是绑定的,因为它们是形式参数。因此,自由标识符是A和D。最后,如果考虑到所给出的全部代码,则没有声明所有标识符的自由标识符。 参考资料:彼得·范·罗伊和塞夫·哈里迪的《计算机编程的概念、技术和模型》

第57页和第58页的结尾对这件事很有意思


前三章在edX平台上提供,如果您注册了课程

谢谢,这是我正在学习的课程,问题就在那里。谢谢,这是我正在学习的课程,问题就在那里。