【发布时间】:2010-09-06 16:51:22
【问题描述】:
Java 有Scala,.NET 有F#。这两种语言都高度集成到各自的 Java 和 .NET 平台中。类可以用 Scala 编写,然后用 Java 进行扩展。
是否存在与 C++ 高度互操作的等效函数式语言?
【问题讨论】:
标签: c++ functional-programming
Java 有Scala,.NET 有F#。这两种语言都高度集成到各自的 Java 和 .NET 平台中。类可以用 Scala 编写,然后用 Java 进行扩展。
是否存在与 C++ 高度互操作的等效函数式语言?
【问题讨论】:
标签: c++ functional-programming
啊,还有别的。虽然这肯定不是您的意思,但 C++ 中的 template metaprogramming 是纯粹的函数式。
【讨论】:
John Skaller 的 Felix 语言旨在与 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++ 的互操作性很好。
【讨论】:
我同意我不确定 C++ 的生态系统。 OCaml 在 .NET 之外进行函数式编程非常受欢迎。 F# 也是基于它。
【讨论】:
这个问题发布于 2008 年。作为参考,C++11 及更高版本支持函数式编程。请参阅为此 Functional Programming in C++ 更新的另一个讨论
【讨论】:
C++ 可能不是纯函数式语言,但 STL 的某些部分肯定是函数式的。
见Bjarne Stroustrup FAQ(c++ 的发明者)
【讨论】: