Это совершенно аналогично тому, как работают карты (самые естественные объекты в Clojure). Когда карта вызывается как функция, она работает как отображение:
user=> (def ob {:foo "bar", :bar :baz, :qwerty 42})
#'user/ob
user=> (ob :foo)
"bar"
Так что имеет смысл, что набор Clojure может быть вызван как функция и будет работать как тест на членство. Кстати, если вы используете ключевые слова (те, которые начинаются с двоеточия) в качестве ключей сопоставления, они также работают как аналогичные функции, поэтому вы можете сделать
user=> (:bar ob)
:baz
и даже то же самое с наборами ключевых слов:
user=> (def vowel-keywords (set [:a :e :i :o :u]))
#'user/vowel-keywords
user=> (:a vowel-keywords)
:a
user=> (:b vowel-keywords)
nil
Но, опять же, этот последний трюк работает только с ключевыми словами, а не с чем-либо еще, что вы могли бы использовать в качестве ключей в сопоставлении или членов в наборе.