suave.io

时间:2015-06-03 13:19:15

标签: f# suave

在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

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

1 个答案:

答案 0 :(得分:3)

如果你看一下你的上一个例子

[OK ""
OK ""]

你应该看到最后一行:OK ""不在上一行OK的正下方:[OK ""(它是左边的一个)

这应该给你一个提示;)

只是必须在同一列中对齐元素(建议:只使用空格)

这就是你经常写的原因

[
   OK ""
   OK ""
]

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

[ OK ""
; OK "" ]

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

备注

这也适用于记录语法:

{
   surname = "Smith"
   givenname = "Adam"
}