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