有C ++生态系统的功能语言吗?

有C ++生态系统的功能语言吗?

Is there a functional language for C++ ecosystem?

Java具有Scala,.NET具有F#。 这两种语言都高度集成到各自的Java和.NET平台中。 可以使用Scala编写类,然后使用Java进行扩展。

是否存在与C ++高度互操作的等效功能语言?


John Skaller编写的Felix语言旨在与C ++互操作并提供功能范例。

但是这样做有问题。函数式语言提供了允许创建闭包的一流函数:从定义的环境中捕获并携带值的函数。这使得无法静态确定值的生存期(因为闭包可能会携带一个值)。它的范围),因此有效地需要一个垃圾收集器,但C ++不会被垃圾收集。


啊,还有别的。尽管这当然不是您的意思,但是C ++中的模板元编程纯粹是功能。


C ++没有Java或.NET的生态系统。没有虚拟机,甚至没有运行时环境,只有一个高度专业化的标准库,该库在设计上不能在纯功能环境中很好地运行。 C ++甚至没有ABI标准。

考虑所有事情,我不确定您的意思/期望。


如前所述,我不太确定C ++的"生态系统"。但是Haskell确实具有外部函数接口,该接口允许您从Haskell调用C函数和从C调用Haskell函数。

再说一遍,就是C,我不太确定C ++ FFI有多远...


" D"语言被设计为C ++的后继者。 Andrei Alexandrescu正在为D 2.0开发D的纯功能子集。我猜想D与C ++可以很好地互操作。


由于Scala编译为Java字节码,而F#编译为.NET字节码,因此可以在各自的虚拟机上运行。正确的比较是,是否有某种功能语言可以编译为与机器相关的代码,并且可以在计算机上运行,??并且可以。

我认为这不是您的意思,但是我所能提供的最好的是FC ++。 Boost是另一个具有许多功能的库,这些功能可以识别为从函数编程派生而来。

但是,我敢打赌那里没有"真正的"函数式编程C ++。


我同意我不确定C ++的生态系统。 OCaml在.NET之外进行功能编程非常受欢迎。 F#也基于它。


该问题发布于2008年。供参考,C ++ 11及更高版本支持函数式编程。查看有关此C ++中的函数式编程更新的另一讨论


C ++可能不是纯函数式语言,但是STL的某些部分肯定是函数式的。

请参阅Bjarne Stroustrup常见问题解答(C ++的发明者)


推荐阅读