Попытка найти более подходящий макрос, чем 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
и проверять их на наличие значений типа. Я просто хочу знать, существует ли этот макрос.