F#支撑放置惯例

F#支撑放置惯例,f#,convention,F#,Convention,在F#中是否有普遍接受的支撑放置约定?我在文档中找到了一些示例,但它们似乎并不一致。特别是,举一个实际的例子,是否有一个共识,哪一个更好 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

在F#中是否有普遍接受的支撑放置约定?我在文档中找到了一些示例,但它们似乎并不一致。特别是,举一个实际的例子,是否有一个共识,哪一个更好

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 
}

同样,对于列表中的方括号和数组文本,它们太大而不能写在一行上,是否通常遵循相同的约定?

评估什么构成“普遍接受的”约定本身就很困难。。。话虽如此,还有Fantomas的一部分,现在也集成到了。他们讨论大括号在记录和列表中的位置。根据这一点,记录的右大括号或列表的右大括号应该在列表行上,只要所包含的结构不太长。对于长构造,如示例中所示,大括号应位于新行上

然而:

不是每个人都喜欢这种风格,变化也可以。对于大型构造(>6行),结束标记可以位于新的行上

没有明确提到
seq{…}
,但我觉得同样的逻辑也适用于这里。因此,您的第二个示例将是首选示例


至于你问题的第二部分,关于数组和列表:如果你遵循Fantomas的惯例,短数组和列表将在列表项上有结束符,大数组和列表将在新行上。

在这种情况下,这无关紧要。我更关心的是缩进。所有示例都使用缩进。这些片段没有。很难理解有多少个循环。你真的想执行4个独立的循环吗?考虑到第二个独立循环似乎需要一个只在第一个循环中定义的
a
,它甚至可以编译吗。这是一个真正的问题。这个问题是问是否有一个普遍接受的惯例,而不是“你最喜欢的风格是什么?”。要么有一个普遍接受的惯例,要么没有——但这个问题不应该就此结束。投票重新开放。大会围绕着缩进。嵌套循环应该缩进。在任何情况下,F#Power tools都可以使用普遍接受的约定格式化文档。缩进嵌套循环,在单独的行上结束大括号。但是,如果更常见的嵌套约定被打破,大括号就不再那么重要了,一旦嵌套循环,您就会意识到可以用更可读的转换管道来替换它们。这是另一个常见的约定-更喜欢管道而不是嵌套循环无论它是否编译,如果只是为了演示大括号的放置,示例可能会简单得多。