開始使用 clojure

StackOverflow 文件

Clojure 是一種帶有 Lisp 語法的動態型別的通用程式語言。

它的功能預設支援具有一流函式和不可變值的程式設計功能樣式。在 Clojure 中使用可重新分配的變數並不像許多主流語言那樣容易,因為必須像容器物件一樣建立和更新變數。這鼓勵使用純粹的值,這些值將保持它們最後一次出現的那一刻。這通常使程式碼更具可預測性,可測試性和併發性。這也適用於集合,因為 Clojure 的內建資料結構是持久的。

為了提高效能,Clojure 支援型別提示,以儘可能消除不必要的反射。此外,可以對瞬態版本執行對持久集合的更改組,從而減少所涉及的物件數量。這在大多數情況下不是必需的,因為持久集合快速複製,因為它們共享大部分資料。他們的表現保證離他們可變的同行不遠。

除了其他功能,Clojure 還具有:

  • 軟體事務儲存器(STM)
  • 幾個不涉及手動鎖定的併發原語(atom, agent)
  • 可組合序列變換器(感測器),
  • 功能樹操作設施(拉鍊)

由於其簡單的語法和高可擴充套件性(通過巨集,核心介面和反射的實現),一些常見的語言功能可以新增到 Clojure 與庫。例如,core.typed 帶來了一個靜態型別檢查器,core.async 帶來了簡單的基於通道的併發機制,core.logic 帶來了邏輯程式設計。

它設計為託管語言,可與其執行的平臺互操作。雖然主要目標是 JVM 和 Java 背後的整個生態系統,但替代實現也可以在其他環境中執行,例如在公共語言執行時執行的 ClojureCLR 或在 JavaScript 執行時(包括 Web 瀏覽器)上執行的 ClojureScript。雖然替代實現可能缺少 JVM 版本的某些功能,但它們仍被視為一類語言。