答案 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 ++的发明者)