与cond匹配类型
问题描述:
试图找到比cond
更适合的宏来执行谓词函数的匹配。与cond匹配类型
目前,我在做这样的事情:
(cond
(map? x) (do-map-code x)
(sequential? x) (do-seq-code x)
(keyword? x) (do-kw-code x)
:else (do-generic-code x))
在一个理想的世界,我想数据应用为每个的左手条件的第一个参数,让我改为写这个。
(cond x
map? (do-map-code x)
sequential? (do-seq-code x)
keyword? (do-kw-code x)
:else (do-generic-code x))
有点像一个向后condp
。
作为参考,我知道我可以使用condp
与type
并检查类型值。我只想知道这个宏是否存在。
答
您可以使用condp
做到这一点:
(condp #(%1 %2) x
map? (do-map-code x)
sequential? (do-seq-code x)
keyword? (do-kw-code x)
(do-generic-code x))