Puede estar confundiendo dos formas diferentes de importar código. Puede hacerlo de esta manera:
user> (use 'clojure.zip)
O mientras se está declarando un espacio de nombres en un archivo de origen:
(ns foo
(:use clojure.zip))
La segunda versión es una macro que se expandió en el primer lugar.
Fuera de (ns)
, haciendo (:use "zip")
va a tratar :use
como una función y llamarla con "zip"
como parámetro (es decir, tratar de utilizar la cadena "zip"
como una colección y buscar la clave :use
en ella), lo que no hace nada .
clojure.zip
tiene algunas funciones cuyos nombres chocar con las cosas en clojure.core
embargo, por lo que o bien tienen que hacer algo como esto:
user> (use '(clojure [zip :rename {next next-zip replace replace-zip remove remove-zip}]))
o preferiblemente esto:
user> (require '(clojure [zip :as zip]))
Con este último se puede consulte funciones como (zip/vector-zip data)
como lo desee.
Consulte la documentación para require y refer y la página que habla de libs.
Gracias por la respuesta completa ... he aprendido algunas cosas de eso. :) – jsight