F#样式-首选()或者<|

时间:2020-03-06 14:55:03  来源:igfitidea点击:

我们会发现这两种选择中的哪一种最常用,哪种更"惯用"?

  • f arg(obj.DoStuff())
  • f arg <| obj.DoStuff()

解决方案

我经常使用(),但这只是偏爱,我敢肯定<|更像偶像,但我习惯使用()。

只要有可能,我都更喜欢|>,因为它从左到右读取。

总体而言,我不知道这两者中的哪一个更为惯用。

就个人而言,只有我使用<|与"提高":

raise <| new FooException("blah")

除此之外,我总是使用parens。请注意,由于大多数Fcode使用咖喱函数,因此这通常并不意味着任何"额外"的括号:

f arg (g x y)

进入非咖喱函数和构造函数时,它开始变得不那么漂亮了:

f arg (g(x,y))

我们可能至少会考虑更改Flanguages规则,以便使更高优先级的应用程序更紧密地绑定在一起。现在

f g()

解析像

f g ()

但很多人希望将其解析为

f (g())

(原始问题中的激励案例)。如果我们对此有强烈的意见,请对此回复发表评论。

因为类型推断从左到右起作用,所以使用|>的好处是它允许F推断函数自变量的类型。

举一个人为的例子

[1; 2; 3] |> (fun x -> x.Length*2)

效果很好,但是

(fun x -> x.Length*2) [1; 2; 3]

抱怨"在不确定类型的对象上查找"。