Programming languages 有多少面向对象功能的混合体?

Programming languages 有多少面向对象功能的混合体?,programming-languages,functional-programming,hybrid,Programming Languages,Functional Programming,Hybrid,我们在这里讨论oo函数的混合,但我想知道,有多少种语言符合这个名称。斯卡拉,克罗朱尔,F#?还有吗 如果每个答案都能有一种这样的语言,再加上一点解释,为什么你认为它是面向对象功能的混合体,那就太好了。Common Lisp。功能方面是非常明显的,另一方面,CLOS是所有对象模型之母。客观Caml——与ML家族的任何语言一样功能强大,但顾名思义,它也有一个完善的OO系统(并且有些独特——我所知的唯一完全结构化的系统)。Smalltalk。我相信很多人都会不同意,但我认为,这种语言不仅拥有一流的函数

我们在这里讨论oo函数的混合,但我想知道,有多少种语言符合这个名称。斯卡拉,克罗朱尔,F#?还有吗


如果每个答案都能有一种这样的语言,再加上一点解释,为什么你认为它是面向对象功能的混合体,那就太好了。

Common Lisp。功能方面是非常明显的,另一方面,CLOS是所有对象模型之母。

客观Caml——与ML家族的任何语言一样功能强大,但顾名思义,它也有一个完善的OO系统(并且有些独特——我所知的唯一完全结构化的系统)。

Smalltalk。我相信很多人都会不同意,但我认为,这种语言不仅拥有一流的函数,而且使用它们的程度如此之高,以至于即使是最基本的构造(如if/else和循环)也被实现为使用函数类型参数的函数调用,值得贴上“functional”的标签。此外,您还列出了Ruby,以及它在FP部门的大部分功能,它继承自Smalltalk。

是(不幸的)不太广为人知的功能性OO混合,设计用于在.NET平台上运行。Nemerle的有趣之处在于它的and。

,它基本上是一种带有面向对象功能的Haskell。

是一种带有类系统的函数式语言(Scheme方言)。类系统支持可重写方法(如Java、C#)和可扩充方法(超类的方法首先获得控制权;它决定是否/何时调用子类的方法以及如何处理结果)。类系统还支持高阶合约


实际上,Lisp和Scheme有很多对象系统。CLOS for Common Lisp可能是最著名和最有影响力的。

你能在这里给出“功能性”的定义吗?是严格的“一阶函数”还是更广泛的(模式匹配等),如果是,具体是什么?@Pavel我自己也在想:这些“混合”语言的“功能性”比例是多少,它们什么时候“功能性”足够。我担心,由于定义足够广泛,适合C#和Ruby,这份名单很容易就有几十种,特别是如果考虑到外来语言和实验性语言的话。你甚至可以为Java做一个例子(由于匿名的内部类)。F#基本上只是带有微软标签的客观Caml。不,不是真的-它们的对象模型完全不同(这就是OCaml与ML家族其他成员的主要区别!),然后,其中一个具有另一个没有的主要特性,例如OCaml中的函子,或者F#中的活动模式和度量单位。