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

时间:2015-10-26 21:14:00

标签: 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)是免费标识符?

2 个答案:

答案 0 :(得分:4)

免费标识符的概念总是带有上下文。如果仅考虑语句E=A+D+F,则四个标识符是免费的。但是如果你考虑过程定义,E和F现在被绑定,因为它们是形式参数。所以免费标识符是A和D.最后,如果你考虑你给出的整个代码,就没有自由标识符,因为所有的标识符都被声明了。

参考:Peter Van Roy和Seif Haridi的计算机编程概念,技术和模型。

第57页的结尾和第58页对此事很有意思。

如果您注册课程Paradigms of Computer Programming

,则可以在edX平台上找到前三章

答案 1 :(得分:2)

任何指令的空闲标识符是指令中与指令外的声明相对应的标识符出现。

所以A和D就是答案。