我们可以用其他方式实现一个概念吗?
Objects in terms of higher order functions?
Higher order functions in terms of objects?
答案 0 :(得分:8)
是
高阶函数的对象?
如果您的语言有记录,那么您可以将对象实现为关闭公共环境的闭包记录。实际上,这正是ECMAScript中实现对象的方式。 (在ECMAScript中,记录混淆地称为对象。)
如果您没有记录,或者您订阅面向消息的OO范例,则可以使用选择器函数,它将“message”作为参数并根据消息返回闭包。这就是所有object systems in Scheme的工作原理,例如Oleg Kiselyov's Purely-functional Object-Oriented System。
对象的高阶函数?
事实上,Scala implements functions using objects。
这是完全如何在Scala中实现函数(使用名为apply
的方法),Ruby(使用名为call
的方法),Python
(使用一个名为__call__
)的方法和Java(作为所谓的SAM接口的实例,一个带有单一抽象方法的接口)。