跳转到正文

Clojure ​

Clojure 是运行在 JVM 上的 Lisp,默认数据模型强调持久化不可变集合。Sequence 把“如何遍历”与具体容器解耦,Transducer 把变换过程从输入输出上下文中解耦;Atom、Ref、Agent 为不同协调模型提供显式状态容器。

独特能力 ​

  • Vector、Map、Set 的更新返回新值,并通过结构共享控制成本。
  • seq、惰性序列和 Transducer 统一批处理与流式变换。
  • Atom 适合独立同步状态,Ref 配合 STM 协调多个引用。
  • Java 类、方法和接口可直接互操作,同时仍保留 Lisp 宏系统。
clj
(ns clojure-demo)

(def state (atom {:count 0}))
(swap! state update :count inc)
(swap! state update :count inc)

(println (str "persistent=" (pr-str (assoc {:language "Clojure"} :runtime "JVM"))))
(println (str "atom=" (:count @state)))
(println (str "sequence=" (pr-str (into [] (comp (filter odd?) (map #(* % %))) (range 1 7)))))
(println (str "interop=" (.toUpperCase "jvm")))
📸 Unverified Snapshot📋hello-lang-clojure:1.12.5
Not verified
persistent={:language "Clojure", :runtime "JVM"}
atom=2
sequence=[1 9 25]
interop=JVM

命名空间声明代码组织边界;deps.edn 声明依赖坐标。本项目固定 org.clojure/clojure 1.12.5,而不是依赖基础镜像中偶然存在的版本。

Released under the MIT License.