Clojure由里奇·希基(Rich Hickey)于2007年发布,是Lisp在JVM上的现代实现。它强调不可变数据、函数式编程和软件事务内存(STM)。
;; Clojure代码示例
;; 定义函数
(defn fib [n]
(cond
(= n 0) 0
(= n 1) 1
:else (+ (fib (- n 1)) (fib (- n 2)))))
;; 使用惰性序列
(def fibonacci-sequence
(map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))
;; 使用数据结构(不可变)
(def users [{:name "Alice" :age 30}
{:name "Bob" :age 25}
{:name "Charlie" :age 35}])
;; 使用线程宏进行函数组合
(def adults
(->> users
(filter #(>= (:age %) 18))
(map :name)))
;; 使用atom进行状态管理
(def counter (atom 0))
(defn increment! []
(swap! counter inc))
;; 使用STM处理并发
(def account-a (ref 100))
(def account-b (ref 50))
(defn transfer [from to amount]
(dosync
(alter from - amount)
(alter to + amount)))
Clojure的特点: