在函数式编程语言中使用对象的有效理由是什么?我看到f#是一种函数式编程语言,在处理类的.net生态系统时,它在对象方面给予了很大的帮助。但是除了与其他程序集/程序的交互可能用c#编写之外,为什么有人会选择使用对象来分解面向函数的语言或样式的程序?
混合一种风格的程序会证明是一种帮助还是一种障碍?
答案 0 :(得分:5)
功能和面向对象的设计使不同类型的扩展变得容易。给定功能设置中的区别联合,很容易定义任何数量的函数,但是很难在类型中添加其他情况,因为这需要返回为每个函数添加额外的情况。匹配类型。另一方面,给定基本类型(或接口)OO设置,很容易添加新的子类型,但是向基类型添加新操作很难,因为它可能需要修改现有的子类型以添加新操作的实现每个人。
根据与手头任务最相关的可扩展性类型,功能或面向对象的方法可能更有意义,因此有两个选项可用是很好的。一种流行的方法是使用“小的”功能方法和“大型”的OO方法(例如,this podcast中提到的Luke Hoban)。
答案 1 :(得分:0)
对象提供封装,使大规模编程更容易。
在函数式编程语言中使用对象的有效理由是什么?
由于各种原因,对象在函数式语言中使用:
大规模的节目结构。
与现有OOP代码的互操作性(例如,在JVM或CLR上)。
使用更多类扩展类层次结构的能力是一个很自然的问题。
混合一种风格的程序会证明是一种帮助还是一种障碍?
可以提供帮助,但没有充分理由这样做是不明智的。