[解決済み] Haskellの合成演算子(.)とF#のパイプ転送演算子(|>)の比較
疑問点
F#では、パイプフォワード演算子を使用します。
|>
を使うことはかなり一般的です。 しかし、Haskellでは、関数の合成しか見たことがない。
(.)
が使われているのを見たことがあります。 私は、それらが
関連
というのはわかるのですが、Haskellでパイプフォワードが使われないのは言語的な理由があるのでしょうか、それとも何か他の理由があるのでしょうか?
どのように解決するのですか?
ちょっと憶測ですが...。
文化
: 思うに
|>
はF#の文化において重要な演算子であり、おそらく同じように
.
と同様です。 F#では、関数合成演算子
<<
がありますが、F#のコミュニティでは
ポイントフリースタイル
を使う傾向があると思います。
言語の違い : 私は両言語について比較できるほどの知識はありませんが、おそらくlet-bindの一般化のルールはこれに影響するほど十分に異なっているのでしょう。 例えば、F#では時々、次のように書くことを知っています。
let f = exp
はコンパイルできませんので、明示的なエタコンバージョンが必要です。
let f x = (exp) x // or x |> exp
でコンパイルできるようになります。 これは、ポイントフリー/合成スタイルから、パイプラインスタイルへと人々を誘導することにもなります。 また、F#の型推論はパイプラインを要求することがあり、既知の型が左側に表示されるようになります(例えば ここで ).
(個人的にはポイントフリースタイルは読みにくいのですが、新しいもの、違うものは、慣れるまでは読みにくく感じるものなのでしょう)
私は、どちらの言語も潜在的に実行可能だと思いますし、歴史/文化/事故が、それぞれのコミュニティがなぜ異なるquot;attractor"に落ち着いたのかを定義するかもしれません。
関連
-
[解決済み】なぜパースエラーになるのか?インデント?
-
[解決済み] Haskellで "length "関数を使用しない場合のリストの長さ
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み】Haskellの入門編
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?
-
[解決済み] Haskellの "Just "構文とは?
-
[解決済み] Haskellの関数合成(.)と関数応用($)イディオム:正しい使い方
-
[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
-
[解決済み] GHCでコンパイルした小さな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におけるdrop関数 - リスト内包を用いた実装
-
[解決済み] モナドはエンドファンクタのカテゴリではただのモノイドですが、何か問題でも?
-
[解決済み] Haskellで大規模設計?[クローズド]
-
[解決済み] Haskellのリストを参照する際の「@」記号の意味は?
-
[解決済み] TLSサーバーを実装するためのHsOpenSSL APIの適切な使用法
-
[解決済み] Haskellデータ型のメモリフットプリント
-
[解決済み] Haskellはガベージコレクタを必要としますか?
-
[解決済み] Haskellのガードとif-then-elseとcaseの比較
-
[解決済み] Haskellのmapにはfmapがあるのに、何の意味があるのだろう?
-
[解決済み] Haskellのprintfはどのように動作するのですか?