我刚刚开始潜入core.match
(顺便说一句,这是一个很棒的库),我希望能够扩展match
来调度任意谓词函数。不幸的是,看起来这是不可能的,因为编译器无法判断函数是否是宏扩展时的函数。
这是否正确,如果是这样(或者如果没有),是否有办法破解它,以便我可以在match
表达式中使用函数,如下所示?
e.g。
(match [7]
[1] :a0
["green"] :a1
[prime?] :a2
[number?] :a3)
我知道通过multimethods扩展接口,并且在使用set literals匹配集合中的包含时非常有效。
提前致谢。