12

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

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

4

9 回答 9

8

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

于 2008-08-24T12:26:13.197 回答
8

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

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

于 2008-10-20T05:56:24.420 回答
7

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

考虑到所有因素,我不确定您的意思/期望。

于 2008-08-24T12:24:32.013 回答
6

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

再说一次,那是 C,我不确定 C++ FFI 有多远......

于 2008-08-24T13:20:11.990 回答
3

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

我不认为那是你的意思,但我能提供的最好的是FC++Boost是另一个库,它具有许多可以被识别为源自函数式编程的特性。

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

于 2008-08-24T12:25:52.993 回答
3

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

于 2008-08-24T21:01:48.247 回答
1

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

于 2008-08-24T21:08:47.603 回答
0

这个问题发布于 2008 年。作为参考,C++11 及更高版本支持函数式编程。请参阅此C++ 中的函数式编程更新的另一个讨论

于 2017-07-11T12:58:57.183 回答
-1

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

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

于 2008-08-24T18:09:55.787 回答