您发现自己最常使用这两种替代品中哪一种更具“习惯性”?

  1. f arg(obj.DoStuff())
  2. 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;因为它从左到右读取。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top