core.match中的谓词函数调度

Isa*_*aac 2 clojure core.match

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

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

例如

(match [7]
    [1] :a0
    ["green"] :a1
    [prime?] :a2
    [number?] :a3)
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.