我刚刚开始深入研究core.match (顺便说一句,这是一个很棒的库),我希望能够扩展match来对任意谓词函数进行调度。不幸的是,这看起来是不可能的,因为编译器无法在宏展开时判断函数是否是函数。
这是正确的吗?如果是这样(如果不是),是否有一种方法可以对其进行黑客攻击,以便我可以在match表达式中使用如下所示的函数?
例如:
(match [7]
[1] :a0
["green"] :a1
[prime?] :a2
[number?] :a3)我知道通过多个方法扩展接口,这对于使用set文本来匹配集合中的容器非常有效。
提前谢谢。
发布于 2013-12-26 05:28:33
似乎您想要使用:guard特性,http://github.com/clojure/core.match/wiki/Overview#guards
https://stackoverflow.com/questions/20779299
复制相似问题