题
您发现自己最常使用这两种替代品中哪一种更具“习惯性”?
- f arg(obj.DoStuff())
- f arg< | obj.DoStuff() 醇>
解决方案
总的来说,我不知道其中一个是更惯用的。
就个人而言,我唯一一次使用< |与“加注”:
raise <| new FooException("blah")
除此之外,我总是使用parens。注意,由于大多数F#代码使用curried函数,因此这通常不意味着任何“额外”代码。的括号:
f arg (g x y)
当你进入非curried函数和构造函数时,它会开始变得不那么漂亮了:
f arg (g(x,y))
我们可能至少考虑更改F#语言规则,以便高优先级应用程序更紧密地绑定;现在
f g()
解析
f g ()
但是很多人都希望它能够解析为
f (g())
(原始问题中的激励案例)。如果您对此有强烈意见,请对此回复发表评论。
其他提示
因为类型推断从左到右工作,使用 |&gt;
的好处是它允许F#推断函数参数的类型。
作为一个人为的例子,
[1; 2; 3] |> (fun x -> x.Length*2)
工作正常,但
(fun x -> x.Length*2) [1; 2; 3]
抱怨“查找不确定类型的对象”。
我经常使用(),但这只是偏好,我很确定&lt; |更加个性化,但我习惯使用()。
只要有可能,我更喜欢|&gt;因为它从左到右读取。
不隶属于 StackOverflow