La forma más común que veo en el código de Clojure para buscar una lista no vacía es usar seq. Esto devuelve nil si la colección está vacía, o un objeto seq válido en caso contrario.
Ejemplo de uso:
(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"
También puede utilizar empty? para probar la opuesta (test es decir, para un conjunto vacío). Tenga en cuenta que vacio? se implementa en el código fuente de clojure como (not (seq coll))
por lo que puede estar seguro sabiendo que los dos enfoques son fundamentalmente equivalentes.
'[]' es el vector vacío, no la lista vacía, ¿no es así? – Svante
@Svante sí. Sospecho que Kevin solo quiere probar una colección vacía en general, pero está usando un vector para su ejemplo mientras dice la lista. – amalloy
Tiene razón; Edité la pregunta. Sin embargo, se encuentra con un problema, porque las personas que buscan en google "lista vacía de prueba de clojure" pueden querer encontrar esta pregunta ... –