繁体   English   中英

如何在Clojure中使用Zip?

[英]How do I use Zip in Clojure?

我对clojure非常新。 zip实用程序看起来很有趣但我似乎无法使用它。

我试过了

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

但我得到了

java.lang.Exception: No such namespace: zip 

你如何使用外部库?

您可能会混淆两种不同的方式来导入代码。 你可以这样做:

user> (use 'clojure.zip)

或者,当您在源文件中声明命名空间时:

(ns foo
  (:use clojure.zip))

第二个版本是一个扩展到第一个版本的宏。

(ns) ,执行(:use "zip")将要处理:use作为函数:use并以"zip"作为参数调用它(即尝试使用字符串"zip"作为集合并查找key :use in it),什么都不做。

clojure.zip有一些函数,其名称与clojure.core东西冲突,所以你要么做这样的事情:

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

或者最好这样:

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

对于后者,您可以根据需要引用(zip/vector-zip data)等函数。

请参阅requirerefer的文档以及有关libs的页面。

我对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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM