2

我刚刚开始深入core.match研究(顺便说一句,这是一个很棒的库),我希望能够扩展match以调度任意谓词函数。不幸的是,这看起来是不可能的,因为编译器在宏扩展时无法判断一个函数是否是一个函数。

这是否正确,如果是(或如果不是),有没有办法破解它,以便我可以在match表达式中使用如下所示的函数?

例如

(match [7]
    [1] :a0
    ["green"] :a1
    [prime?] :a2
    [number?] :a3)

我知道通过多方法扩展接口,这对于使用集合文字来匹配集合内的包含非常有效。

提前致谢。

4

1 回答 1

6

看来您想使用该:guard功能, http: //github.com/clojure/core.match/wiki/Overview#guards

于 2013-12-26T05:28:33.527 回答