如果我正确阅读,OCaml文档(here,特别是)表示fun
可以拥有"当"警卫,例如:
fun a b when a < b -> a + b;;
然而,这会在&#34;当&#34;时抛出语法错误。是什么赋予了?我读错了吗?
更多信息
下面以类似BNF的语法复制documentation中的相关部分:
expr ::= ...
| fun multiple-matching
| ...
multiple-matching ::= { pattern }+ [when expr] -> expr
答案 0 :(得分:2)
您发现了文档错误。 fun
无法接受警卫。
注意:该修补程序已经被拉取请求:https://github.com/ocaml/ocaml-manual/pull/2