我正在学习Clojure,作为练习,我想写一些像unix"comm"命令.
为此,我将每个文件的内容读入一个集合,然后使用差异/交集来显示独占/公共文件.
经过大量的repl-time,我为set set部分想出了类似的东西:
(def contents (ref #{}))
(doseq [line (read-lines "/tmp/a.txt")]
(dosync (ref-set contents (conj @contents line))))
Run Code Online (Sandbox Code Playgroud)
(我正在使用duck-streams/read-lines来查找文件的内容).
这是我对任何函数式编程或lisp/Clojure的第一次尝试.例如,我无法理解为什么,当我在集合上做了一个结合时,该集合仍然是空的.这让我了解了参考资料.
clojure ×1