Ответ 1
seq?
- это предикат, который возвращает true, если аргумент реализует интерфейс ISeq
, то есть он предоставляет методы first
, rest
, cons
. См. http://clojure.org/sequences.
(seq? [1 2])
false
(seq? (seq [1 2]))
true
sequential?
- предикат, который возвращает true, если аргумент реализует интерфейс Sequential
. Sequential
является интерфейсом маркера (без методов) и является обещанием, что сбор может быть повторен в определенном порядке (например, список, но не карта).
(sequential? [])
true
(sequential? {})
false
coll?
- предикат, который возвращает true, если его аргумент implments IPersistentCollection
. Так, например, структуры данных clojure вернули бы true, тогда как собственные структуры данных Java не будут:
(coll? {:a 1})
true
(coll? (java.util.HashMap.))
false