開始使用 clojure
Clojure 是一種帶有 Lisp 語法的動態型別的通用程式語言。
它的功能預設支援具有一流函式和不可變值的程式設計功能樣式。在 Clojure 中使用可重新分配的變數並不像許多主流語言那樣容易,因為必須像容器物件一樣建立和更新變數。這鼓勵使用純粹的值,這些值將保持它們最後一次出現的那一刻。這通常使程式碼更具可預測性,可測試性和併發性。這也適用於集合,因為 Clojure 的內建資料結構是持久的。
為了提高效能,Clojure 支援型別提示,以儘可能消除不必要的反射。此外,可以對瞬態版本執行對持久集合的更改組,從而減少所涉及的物件數量。這在大多數情況下不是必需的,因為持久集合快速複製,因為它們共享大部分資料。他們的表現保證離他們可變的同行不遠。
除了其他功能,Clojure 還具有:
- 軟體事務儲存器(STM)
- 幾個不涉及手動鎖定的併發原語(atom, agent)
- 可組合序列變換器(感測器),
- 功能樹操作設施(拉鍊)
由於其簡單的語法和高可擴充套件性(通過巨集,核心介面和反射的實現),一些常見的語言功能可以新增到 Clojure 與庫。例如,core.typed
帶來了一個靜態型別檢查器,core.async
帶來了簡單的基於通道的併發機制,core.logic
帶來了邏輯程式設計。
它設計為託管語言,可與其執行的平臺互操作。雖然主要目標是 JVM 和 Java 背後的整個生態系統,但替代實現也可以在其他環境中執行,例如在公共語言執行時執行的 ClojureCLR 或在 JavaScript 執行時(包括 Web 瀏覽器)上執行的 ClojureScript。雖然替代實現可能缺少 JVM 版本的某些功能,但它們仍被視為一類語言。