2つの選択肢のどれがあなた自身を最も頻繁に使用していますか?どちらがより「慣用」ですか?F#スタイル - prefer()または<|
- Fの引数(obj.DoStuff())
- Fの引数< | obj.DoStuff()
2つの選択肢のどれがあなた自身を最も頻繁に使用していますか?どちらがより「慣用」ですか?F#スタイル - prefer()または<|
全体的に、私はどちらか一方がもっと慣用的であるかどうかはわかりません。
個人的には、私が使用する唯一の時間< |
raise <| new FooException("blah")
私は常に括弧を使用しています。
f arg (g x y)
あなたは非カリー化関数とコンストラクタに入ると、それはあまりきれいになっ始まりその他もろもろというときにです:
最もF#コードは、カリー化関数を使用するので、これは典型的には、任意の「余分な」括弧を意味するものではないことに注意してくださいf arg (g(x,y))
我々は、おそらく、少なくともは、高優先順位のアプリケーションは、より緊密に結合するようは、F#言語規則の変更を検討します。今
f g()
は
f g()
のように解析しますが、多くの人々は、それが
f (g())
(元の質問でやる気の場合)として解析したいと思います。これについて強い意見がある場合は、この回答にコメントを残してください。
FSHubでこれと次のスレッドを読むと http://cs.hubfs.net/forums/thread/3665.aspx http://cs.hubfs.net/forums/thread/5421.aspx 私は私がペンを見つけるとすぐに「f(g)()」のような「fs()」のようなパースをしましょう! これを「固定」すると、フレームワークを非常にきれいにすることができます。 –
フレームワークからのメソッド呼び出しをより自然に使うために、f()()のようなf()を解析してみたいと思います。しかし、私はすでに生産リリースがあると考えて、遅すぎるのではないかと心配しています... –
実際にはまだ変更が可能です。 'g'と' open-paren 'との間にスペースを入れずに'アプリケーション '( 'gx')と'優先順位の高いアプリケーション'( 'g(x)')を区別するので 'fg(x)'は決してコンパイルされません(fg(x))が2つの引数をfに渡し、f(g(x))が1つの引数をfに渡すかどうかにかかわらず)。それで、将来の改訂版の言語が「法的プログラムを認めて」、それは改正されない変化である可能性があります。しかし、それは非常に微妙なもので(微妙な法的プログラムには意味のある空白を作っています)、そんなことはありません。 – Brian
私は(もっと)頻繁に使用しますが、それはちょっと好みです、私はかなり確信しています。< |もっと怠け者ですが、私は習慣で()を使います。
いつでも、私は左から右に読むために|>を好むでしょう。
型推論は左から右に作用するので、|>
を使用すると、F#が関数の引数の型を推論できるようになります。不自然な例として
、
[1; 2; 3] |> (fun x -> x.Length*2)
うまく動作しますが、
(fun x -> x.Length*2) [1; 2; 3]
は "不確定型のオブジェクトの参照" を訴えます。私も< `知りませんでした
+1原因|';) – Dario