Самый распространенный способ проверки непустого списка в коде Clojure - использовать seq . Это возвращает ноль, если коллекция пуста, или действительный объект seq в противном случае.
Пример использования:
(seq [])
=> nil
(seq nil)
=> nil
(seq [1 2 3])
=> (1 2 3) ;; note this is a "true value"
(if (seq [1 4 6]) "true" "false")
=> "true"
(if (seq []) "true" "false")
=> "false"
Вы также можете использовать empty? , чтобы проверить обратное (т. Е. Проверить пустой набор). Обратите внимание, что пусто? реализован в исходном коде clojure как (not (seq coll))
, так что вы можете быть в безопасности, зная, что оба подхода фундаментально эквивалентны.