core.match中的谓词函数调度

时间:2013-12-26 04:50:38

标签: clojure core.match

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

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

e.g。

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

我知道通过multimethods扩展接口,并且在使用set literals匹配集合中的包含时非常有效。

提前致谢。

1 个答案:

答案 0 :(得分:6)