The filter is lazy. Since you are not evaluating the result (filter (fn [[k]] (= k 15)) a), it does nothing but lazy consistency.
In fact, it’s (fn [[k]] (= k 15))not entirely correct, but you don’t see it because it is not being evaluated.
(let [a [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]]
(filter (fn [[k]] (= k 15)) a))
=> java.lang.UnsupportedOperationException: nth not supported on this type: Integer
[Thrown class java.lang.RuntimeException]
Do you want something like
(time
(let [a [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]]
(dotimes [i 100000]
(some (fn [k] (= k 15)) a))))
"Elapsed time: 173.689 msecs"
nil
Instead of the wrong one:
(time
(let [a [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]]
(dotimes [i 100000]
(filter (fn [[k]] (= k 15)) a))))
"Elapsed time: 33.852 msecs"
nil