resolve
или ns-resolve
может делать то, что вы ищете:
user> (def a 1)
#'user/a
user> (def b)
#'user/b
user> (resolve 'a)
#'user/a
user> (resolve 'b)
#'user/b
user> (resolve 'c)
nil
Чтобы получить логическое значение:
user> (boolean (resolve 'b))
true
РЕДАКТИРОВАТЬ: согласно комментарию MayDaniel, это не совсем то, что вы просили, но он доставит вас туда. Вот реализация bounded?
(вероятно, не лучшее название):
(defn bounded? [sym]
(if-let [v (resolve sym)]
(bound? v)
false))
user> (map bounded? ['a 'b 'c])
(true false false)