F#中是否有普遍接受的支架放置约定?我在文档here中找到了一些示例,但它们似乎并不相互一致。特别是,并且举一个实际的例子,是否有更好的共识,这个
seq {
for polarity, a in Set.filter (fun (polarity, _) -> polarity) c do
let c = Set.remove (polarity, a) c
for a0, a1 in orientations (eqn a) do
for polarity, b in Set.filter (fun (polarity, _) -> polarity) c do
let c = Set.remove (polarity, b) c
for b0, b1 in orientations (eqn b) do
match unify a0 b0 with
| None ->
()
| Some m ->
yield
c
|> Set.add (true, equal (a0, a1))
|> Set.add (false, equal (a1, b1))
|> evalClause m }
还是这个?
seq {
for polarity, a in Set.filter (fun (polarity, _) -> polarity) c do
let c = Set.remove (polarity, a) c
for a0, a1 in orientations (eqn a) do
for polarity, b in Set.filter (fun (polarity, _) -> polarity) c do
let c = Set.remove (polarity, b) c
for b0, b1 in orientations (eqn b) do
match unify a0 b0 with
| None ->
()
| Some m ->
yield
c
|> Set.add (true, equal (a0, a1))
|> Set.add (false, equal (a1, b1))
|> evalClause m
}
类似于列表和数组文字中的方括号太大而无法写在一行上 - 通常遵循相同的约定吗?
答案 0 :(得分:1)
本质上很难评估什么构成一个普遍接受的"惯例......话虽如此,有F# formatting conventions,Fantomas的一部分,现在也已整合到Visual F# Power Tools中。他们讨论了在记录和列表中放置大括号。根据这一点,记录的右括号或列表的]
应该在列表行上 - 只要封闭的构造不太长。对于长构造,如示例中的情况,大括号应该在新行上。
然而,they also say:
不是每个人都喜欢这种风格,并且变化是可以的。对于大型构造(> 6行),结束令牌可以在新线上
没有明确提到seq { ... }
,但我觉得同样的逻辑适用于那里。因此,你的第二个例子将是首选的例子。
关于你的问题的第二部分,关于数组和列表:如果你使用Fantomas约定,短数组和列表将在列表项上关闭它们,在新行上有大数据。