Решил вот тут использовать алгоритм, анализ в котором основан на типе определения, в языке с динамической типизацией и неявным приведением онных.
А именно есть мультиметод принимающий х. Если х мапа, вектор или список, то вызывается один метод. Если х попадает под определение :default, то возвращаем х как есть.
Все вроде бы хорошо на примерах с последовательностями небольшого размера, а вот с чем-то большим кложа заботливо переводит PersistentArrayMap в PersistentHaspMap в целях производительности. Да, я прописал class как функцию выбора метода.
Как это сделать полюдски?