是否有C ++生态系统的函数式语言?

时间:2008-08-24 12:14:14

标签: c++ functional-programming

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

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

9 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:7)

啊,别的。虽然这肯定不是你的意思,但C ++中的template metaprogramming纯粹是功能性的。

答案 3 :(得分:6)

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

然后再说那是C,我不确定C ++ FFI到底有多远......

答案 4 :(得分:3)

由于Scala编译成Java字节码而F#编译成.NET字节码,因此可以在各自的虚拟机上运行。正确的比较是,如果有一些函数语言编译为机器相关代码,准备在计算机上运行,​​是的,有。

我认为这不是你的意思,但我要提供的最好的是FC++Boost是另一个具有许多功能的库,可以识别这些功能来自函数式编程。

然而,我敢打赌,没有'真正的'函数式编程C ++:es out there。

答案 5 :(得分:3)

'D'语言被设计为C ++的继承者。 Andrei Alexandrescu正在为D 2.0开发一个D的纯功能子集。我猜D与C ++很好地互操作。

答案 6 :(得分:1)

我同意我不确定C ++的生态系统。 OCaml非常适合在.NET之外进行函数式编程。 F#也是基于它。

答案 7 :(得分:0)

此问题发布于2008年。作为参考,C ++ 11以上版本支持函数式编程。请参阅针对此Functional Programming in C++

更新的其他讨论

答案 8 :(得分:-1)

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

参见Bjarne Stroustrup FAQ(c ++的发明者)