JavaはScala、.NETはF#です。これらの言語はいずれも、それぞれのJavaおよび.NETプラットフォームに非常に高度に統合されています。クラスはScalaで記述し、Javaで拡張することができます。C++エコシステム用の関数言語はありますか?
C++と高度に相互運用する同等の機能的言語が存在しますか?
JavaはScala、.NETはF#です。これらの言語はいずれも、それぞれのJavaおよび.NETプラットフォームに非常に高度に統合されています。クラスはScalaで記述し、Javaで拡張することができます。C++エコシステム用の関数言語はありますか?
C++と高度に相互運用する同等の機能的言語が存在しますか?
C++には、Javaまたは.NETの意味でのエコシステムはありません。バーチャルマシンはなく、実行時環境もなく、純粋に機能的な環境ではうまく動作しない高度に特化した標準ライブラリしかありません。 C++にはABI標準がありません。
すべてのことが考慮されていますが、私はあなたが何を意味するのかはわかりません。
ああ、何か。これは確かにあなたが意味するものではありませんが、C++のtemplate metaprogrammingは純粋に機能的です。
これまで言われたように、私はC++の「生態系」についてはあまりよく分かりません。しかし、Haskellには、Haskell関数とHaskell関数のC関数をC言語から呼び出すことができる外部関数インタフェースがあります。
さらにC言語では、C++ FFIとの距離はどれくらいですか...
C++は純粋な関数型言語ではないかもしれませんが、STLの一部は確かに機能的です。
はBjarne Stroustrup FAQ 'D' 言語はC++の後継として設計された
実際はそうではありません:C++には、自動環境キャプチャ機能を備えたファーストクラスの機能はありません。あなたが言及しているのは、ちょっと退屈で、はるかに表現力がありません。 また、関数プログラミングについては、Bjarne StroustrupとAlex Stepanovは一般的に完全に間違っています。 –
C++ 0xには、通常のC++リソース管理に関する注意事項が適用されますが(GCが不足しているため)、ラムダの形で自動的に環境をキャプチャするファーストクラスの機能があります。 –
(C++の発明)参照します。 Andrei AlexandrescuによってD 2.0の純粋に機能的なサブセットが開発されています。私はDがC++とうまく連携していると推測しています。
Dは実際にはC++ではうまく動作しません。ほとんどの場合、Cラッパーを書く必要があります。 – Zifre
私はC++のエコシステムについてはわかりませんが、私は同意します。 OCamlは、.NET以外での関数型プログラミングには非常に人気があります。 F#もそれに基づいています。
John Skallerの言語は、C++と相互運用し、機能的なパラダイムを提供するように設計されています。
これには問題があります。関数型言語は、クロージャの作成を可能にするファーストクラスの関数を提供しています。関数は、定義された環境から値を取得して保持します。これにより、値の静的な存続時間を決定することができなくなります(クロージャは、その結果、ガベージコレクタが効果的に必要ですが、C++はガベージコレクションされません。
フェリックスはC++と非常によく統合されています。 – refi64
この質問は2008年に投稿されました。参考までに、C++ 11以降では関数型プログラミングがサポートされています。これについて更新された別のディスカッションを参照してくださいFunctional Programming in C++
私がこの問題に着手した理由は、C++で簡潔に使用できる(すなわち人間が理解できるコードの最小限のライン)言語を探しているからです。 –