pat with g = y -> z

问题描述 投票:4回答:2

我读到过关于花样护栏的文章 code.google.com 其中显示了这种类型的防护。

match x with
| pat with g = y -> z
| ...
| pat with g = y -> z

但在OCaml 4.02中,似乎并不适用(Syntax error: pattern expected.),所以问题是:在模式匹配中有没有一种变通的方法来实现这种绑定?我想写这样的东西

match something with
| value with y = f x when y > 0 -> value + y

先谢谢你,加油。

functional-programming pattern-matching ocaml pattern-guards
2个回答
5
投票

. 你的例子可以翻译成。

它看起来比 "模式 "更难看 但在PPX中,我们必须在vanilla语法中加入一些属性和扩展,如

.

match something with
| value when [%guard let y = f x;; y > 0] -> value + y

本页是关于 [%guard ...] 功能,但实际上从未被合并到编译器中。目前,OCaml没有主动模式。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.