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