支撑放置的F#约定

时间:2017-03-28 08:03:12

标签: f# convention

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 
}

类似于列表和数组文字中的方括号太大而无法写在一行上 - 通常遵循相同的约定吗?

1 个答案:

答案 0 :(得分:1)

本质上很难评估什么构成一个普遍接受的"惯例......话虽如此,有F# formatting conventions,Fantomas的一部分,现在也已整合到Visual F# Power Tools中。他们讨论了在记录和列表中放置大括号。根据这一点,记录的右括号或列表的]应该在列表行上 - 只要封闭的构造不太长。对于长构造,如示例中的情况,大括号应该在新行上。

然而,they also say

  

不是每个人都喜欢这种风格,并且变化是可以的。对于大型构造(> 6行),结束令牌可以在新线上

没有明确提到seq { ... },但我觉得同样的逻辑适用于那里。因此,你的第二个例子将是首选的例子。

关于你的问题的第二部分,关于数组和列表:如果你使用Fantomas约定,短数组和列表将在列表项上关闭它们,在新行上有大数据。