Si potrebbero confondere due modi diversi per importare il codice. Si può fare in questo modo:
user> (use 'clojure.zip)
o mentre si sta dichiarando un namespace in un file di origine:
(ns foo
(:use clojure.zip))
La seconda versione è una macro che si espande nella prima.
Al di fuori di (ns)
, facendo (:use "zip")
sta per trattare :use
in funzione e chiamarlo con il "zip"
come parametro (vale a dire cercare di utilizzare la stringa "zip"
come una collezione e cercare la chiave :use
in esso), che non fa nulla .
clojure.zip
ha alcune funzioni il cui nome si scontrano con le cose in clojure.core
però, così hai a fare qualcosa di simile:
user> (use '(clojure [zip :rename {next next-zip replace replace-zip remove remove-zip}]))
o, preferibilmente, in questo modo:
user> (require '(clojure [zip :as zip]))
Con quest'ultimo è possibile fare riferimento a funzioni come (zip/vector-zip data)
come desiderato.
Vedere la documentazione per require e refer e la pagina che parla di libs.
fonte
2009-07-23 02:11:48
Grazie per la risposta esauriente ... ho imparato alcune cose da questo. :) – jsight