在 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
那么,这个符号是如何工作的呢?