Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure core.match中的谓词函数分派_Clojure_Core.match - Fatal编程技术网

Clojure core.match中的谓词函数分派

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

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

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

e、 g

我知道通过多方法扩展接口,这对于使用集合文本匹配集合中的包含非常有效


提前感谢。

您似乎想使用
:guard
功能

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