[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
質問
との比較をネットで検索してみると F# と ハスケル を使用していますが、本当に決定的なものは何も見つかっていません。主な違いは何でしょうか、また、なぜどちらかを選びたいのでしょうか。
どのように解決するのですか?
Haskellは純粋な関数型言語ですが、F#は命令型/オブジェクト指向型と関数型言語の両方の側面を持っています。また、Haskellは関数型言語では珍しく遅延評価を持っています。
これらは何を意味するのでしょうか。純粋な関数型言語とは、副作用(または関数が呼び出されたときの共有状態の変化)がないことを意味します。つまり、f(x)を呼び出すと、関数から値を返す以外に、コンソール出力、データベース出力、グローバル変数または静的変数の変更など、何も起こらないことが保証されているのです... Haskellでは(単項式により)純粋ではない関数もありますが、宣言により「明示的に」暗示される必要があります。
純粋な関数型言語と「副作用のない」プログラミングは、マルチコア並行処理に適しているため、最近人気を集めています。
遅延評価とは、絶対に必要なときまで関数を評価しないことです。つまり、多くの操作を不要なときに避けることができます。C#の基本的なif節で考えてみると、このようになります。
if(IsSomethingTrue() && AnotherThingTrue())
{
do something;
}
もし
IsSomethingTrue()
が false ならば
AnotherThingTrue()
メソッドは評価されません。
Haskellは素晴らしい言語ですが、F#の主な利点は(今のところ)CLRの上に乗っていることです。これは、ポリグロット プログラミングに適しています。いつか、Web UIをASP.net MVCで、ビジネスロジックをC#で、コアアルゴリズムをF#で、ユニットテストをIronrubyで書く......というように、.Netフレームワークの中ですべてを書くことができるようになるかもしれないのです。 すべて.Netフレームワークの中で。
Haskellの詳細については、Simon Peyton Jonesのソフトウェアエンジニアリングのラジオをお聞きください。 エピソード108 Simon Peyton Jonesによる関数型プログラミングとHaskellの話
関連
-
[解決済み】haskellでリストを逆順にする
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] フリーモナドとは何ですか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み] Haskellのリストを参照する際の「@」記号の意味は?
-
[解決済み】Haskellの入門編
-
[解決済み] なぜ依存型でないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】haskellでリストを逆順にする
-
[解決済み] なぜHaskellでは整数の割り算ができないのか?
-
[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
-
[解決済み] haskellにおけるdrop関数 - リスト内包を用いた実装
-
[解決済み] 制約条件付き特殊化
-
[解決済み] Haskellのリストを参照する際の「@」記号の意味は?
-
[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
-
[解決済み] Haskellでグラフはどのように表現するのか?
-
[解決済み] Haskell型とデータコンストラクタ
-
[解決済み] GHCでコンパイルした小さなHaskellプログラムを巨大なバイナリにする