有C ++生态系统的功能语言吗?
Java具有Scala,.NET具有F#。这两种语言都高度集成到各自的Java和.NET平台中。可以使用Scala编写类,然后使用Java进行扩展。
是否存在与C ++高度互操作的等效功能语言?
解决方案
回答
C ++没有Java或者.NET的生态系统。没有虚拟机,甚至没有运行时环境,只有一个高度专业化的标准库,该库在设计上不能在纯功能环境中很好地运行。 C ++甚至没有ABI标准。
考虑所有事情,我不确定意思/期望。
回答
由于Scala编译成Java字节码,而F编译成.NET字节码,因此可以在各自的虚拟机上运行。正确的比较是,是否有某种功能语言可以编译为与机器相关的代码,可以在计算机上运行,并且可以。
我认为这不是意思,但是我所能提供的最好的是FC ++。 Boost是另一个具有很多功能的库,这些功能可以识别为从函数式编程派生而来。
但是,我敢打赌,那里没有"真正的"函数式编程C ++。
回答
啊,还有别的。尽管这当然不是意思,但是C ++中的模板元编程纯粹是功能。
回答
如前所述,我不太确定C ++的"生态系统"。但是Haskell确实有一个外部函数接口,该接口允许我们从Haskell调用C函数和从C调用Haskell函数。
再说一遍,那就是C,我不太确定C ++ FFI有多远...
回答
C ++可能不是纯函数式语言,但是STL的某些部分肯定是函数式的。
请参阅Bjarne Stroustrup常见问题解答(C ++的发明者)
回答
" D"语言被设计为C ++的后继者。 Andrei Alexandrescu正在为D 2.0开发D的纯功能子集。我猜想D与C ++可以很好地互操作。
回答
我同意我不确定C ++的生态系统。 OCaml在.NET外部进行函数式编程非常受欢迎。 Fis也基于此。
回答
John Skaller编写的Felix语言旨在与C ++互操作并提供功能范例。
但是这样做有问题。函数式语言提供了允许创建闭包的一流函数:从定义的环境中捕获并携带值的函数。这使得无法静态确定值的生存期(因为闭包可能会将值带出一个值)。它的范围),因此有效地需要一个垃圾收集器,但C ++不会被垃圾收集。