2009-07-23 12 views
9

私は非常に新しいclojureです。 zipユーティリティは興味深いようですが、私はそれを使用するようです。ClojureでZipを使用するにはどうすればよいですか?

私は

;; ZIP 
(:use "zip") 
(def data '[[a * b] + [c * d]]) 
(def dz (zip/vector-zip data)) 

を試してみました。しかし、私は

java.lang.Exception: No such namespace: zip 

どのようにヨーヨーが外部ライブラリを使用しないを取得していますか?

答えて

16

コードをインポートするには2つの異なる方法があります。第二のバージョンが最初に展開されるマクロです

(ns foo 
    (:use clojure.zip)) 

user> (use 'clojure.zip) 

それとも、ソース・ファイルに名前空間を宣言している間:あなたは、このようにそれを行うことができます。 (:use "zip")をやっ

(ns)のは、何もしないこれ、(コレクションとして文字列"zip"を使用して、それにキー:useを検索してみてくださいIE)の関数として:useを扱い、そのパラメータとして"zip"でそれを呼び出すために起こっています。

user> (use '(clojure [zip :rename {next next-zip replace replace-zip remove remove-zip}])) 

、または好ましくは、この:あなたができ、後者では

user> (require '(clojure [zip :as zip])) 

あなたはこのような何かを持っているいずれかのよう

clojure.zipは、名前しかしclojure.coreで物事に衝突し、いくつかの機能を持っていますあなたが望むように(zip/vector-zip data)のような機能を参照してください。

requirereferについては、libsのページを参照してください。

+1

おかげで...私はそれからいくつかのことを学びました。 :) – jsight

2

私はClojureのについて多くを知らないが、この小さな小唄が動作しているようです:包括的な答えを

(require '[clojure.zip :as zip]) 
(def t '(:a (:b :d) (:c :e :f))) 
(def z (zip/zipper rest rest cons t)) 
(zip/node z) 
+0

Ooops、私は遅すぎた。 :) – jsight

関連する問題