В вашей анонимной функции есть проблема - давайте напишем ее более читабельно:
((fn [x]
(do filter
even?
x))
(range 10))
Теперь я думаю, что очевидно, почему она возвращает всю последовательность диапазонов: значение (range 10)
привязан к аргументу x
и возвращается как результат вашей функции.
Правильная версия будет:
((fn [x] (filter even? x))
(range 10))
;; => (0 2 4 6 8)