1

在 suave.io 中,我们可以使用choose具有该Types.WebPart list -> Types.WebPart类型的组合器。他们网站上的例子表明我可以像这样使用这个组合器:

choose
    [ path "/hello" >>= OK "Hello GET"
      path "/goodbye" >>= OK "Good bye GET" ]

这个列表符号看起来很奇怪,因为它不需要用分号分隔元素。然而,我无法在不同的环境中以这种方式使用它。所以以下工作:

> choose
    [OK ""
     OK ""];;
val it : Types.WebPart = <fun:choose@47>'

> choose [OK "" ;OK ""];;
val it : Types.WebPart = <fun:choose@47>

但以下内容无法编译:

>choose [OK "" OK ""];; //ERROR
> [OK ""
  OK ""];; //ERROR

那么,这个符号是如何工作的呢?

4

1 回答 1

3

如果你看你的最后一个例子

[OK ""
OK ""]

您应该看到最后一行:OK ""不直接在OK上一行的下方:([OK ""它是左侧之一)

这应该给你一个提示;)

只需将同一列中的元素对齐(推荐:只使用空格)

这就是为什么你通常写

[
   OK ""
   OK ""
]

[而不是在- 或类似之后开始第一个元素

[ OK ""
; OK "" ]

也是,但我认为这不是惯用的 F#。

评论

这也适用于记录语法:

{
   surname = "Smith"
   givenname = "Adam"
}
于 2015-06-03T13:26:58.697 回答