编写需要执行谓词分派(如代码分析库)的代码时,通常需要一个看似下面的invoke
函数。
`
(defn classify [x]
(condp invoke x
string? (string-f x ..)
number? (number-f x ..)
..))
`
这个例子可以不用 invoke
表达,但 condp invoke
模式读起来相当好。
此外,invoke
也适用于有函数和值滑窗的场景,例如
(apply map invoke funs vals)
补丁: 0001-CLJ-2342-add-invoke.patch