Vous pouvez être déroutant de deux manières différentes d'importer du code. Vous pouvez le faire de cette façon:
user> (use 'clojure.zip)
Ou alors vous déclarer un espace de noms dans un fichier source:
(ns foo
(:use clojure.zip))
La deuxième version est une macro qui est développée dans la première.
En dehors de (ns)
, faire (:use "zip")
va traiter :use
en fonction et l'appeler avec "zip"
comme paramètre (par exemple essayer d'utiliser la chaîne "zip"
comme une collection et rechercher la :use
clé en elle), qui ne fait rien .
clojure.zip
a quelques fonctions dont les noms en conflit avec les choses à clojure.core
, donc vous devez soit faire quelque chose comme ceci:
user> (use '(clojure [zip :rename {next next-zip replace replace-zip remove remove-zip}]))
Ou de préférence ceci:
user> (require '(clojure [zip :as zip]))
Avec ce dernier, vous pouvez se référer à des fonctions comme (zip/vector-zip data)
comme vous le souhaitez. Voir la documentation pour require et refer et la page qui parle de libs.
Merci pour la réponse complète ... J'ai appris quelques choses de cela. :) – jsight