2009-07-23 2 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

두 가지 다른 방법으로 코드를 가져올 수 있습니다. 당신은 소스 파일에 네임 스페이스를 선언하는 동안

user> (use 'clojure.zip) 

또는 : 당신은이 방법을 수행 할 수 있습니다

(ns foo 
    (: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

관련 문제