2009-07-23 37 views
9

Ben clojure için çok yeni. Zip yardımcı programı ilginç görünüyor ama kullanmıyorum.Zip'i Clojure'da nasıl kullanırım?

Ben

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

çalıştı Ama

java.lang.Exception: No such namespace: zip 

Nasıl yo harici kütüphaneleri kullanırım alıyorum?

cevap

16

Kodu içe aktarmak için iki farklı yolu karıştırıyor olabilirsiniz. Bir kaynak dosyada bir ad alanını beyan yaparken

user> (use 'clojure.zip) 

Veya: Sen bu şekilde yapabiliriz

(ns foo 
    (:use clojure.zip)) 

ikinci sürümü ilk genişletilir bir makrodur. (:use "zip") yapıyor

dışında (ns) arasında, hiçbir şey yapmaz, hangi (bir koleksiyon olarak dize "zip" kullanmak ve içinde anahtar :use kadar bakmaya çalışıyorum yani) bir fonksiyonu olarak :use tedavi ve parametre olarak "zip" ile arayacak .

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

Veya tercihen bu: yapabilirsiniz İkincisi ile

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

böyle bir şey yapmak zorunda ya yüzden

clojure.zip

isimleri olsa clojure.core şeyler arasında çatışma bazı işlevlere sahiptir (zip/vector-zip data) gibi işlevlere bakın.

require ve refer belgelerine ve libs numaralı sayfaya bakın.

+1

Teşekkür ... Bundan bir birkaç şey öğrendim. :) – jsight

2

Ben Clojure hakkında çok şey bilmiyorum, ama bu küçük ditty iş gibi görünüyor: Kapsamlı cevap

(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, Çok geç kaldım. :) – jsight

İlgili konular