iT邦幫忙

鐵人檔案

2018 iT 邦幫忙鐵人賽
回列表
Software Development

擁抱 Clojure 系列

Clojure 是一門建立在 JVM 上的 Lisp 方言。它將腳本語言的互動便利性,以及用於多執行緒程式設計的穩健基礎結合起來;它是一種編譯語言,卻保留了動態語言的強大。它提供了簡易的方法,可以輕鬆地存取 Java 函式庫。

Clojure 奉行「程式即爲數據」的 Lisp 哲學,並引入了強大的巨集系統;Clojure 亦是函數式程式語言,更爲了現今多核處理器的開發需求,提供了狀態管理的系統,以確保清晰、正確的多執行緒程式設計。

透過這一系列文章,希望帶領讀者體會及了解 Clojure 語言的優雅、強大與實用,進而在實戰環境中使用 Clojure、擁抱 Clojure。

鐵人鍊成 | 共 30 篇文章 | 14 人訂閱 訂閱系列文 RSS系列文
DAY 11

[第 11 天] 擁抱 Clojure:流程控制(一)

流程控制(一) 流程控制是枝幹、河流與道路,將如同樹葉、土地與城市一樣的函式連結起來,藉由流程控制,程式可以選擇行走的方向,前進後退、左右轉或是不斷反覆。 本篇...

2017-12-30 ‧ 由 林萌 分享
DAY 12

[第 12 天] 擁抱 Clojure:流程控制(二)

流程控制(二) 迭代 由於 Clojure 中的資料結構都是不可變 (Immutable),所以沒有主流程式語言的 for 迴圈,因爲 for 迴圈需要在每次迭...

2017-12-31 ‧ 由 林萌 分享
DAY 13

[第 13 天] 擁抱 Clojure:流程控制(三)

流程控制(三) 列表推導 Clojure 中的 for 與一般程式語言的 for 不同,它利用一個群集作爲來源,運用運算式以及條件式產生新的群集,這稱作列表推導...

2018-01-01 ‧ 由 林萌 分享
DAY 14

[第 14 天] 擁抱 Clojure:命名空間與專案(一)

命名空間與專案(一) 我心裡一直都在暗暗設想,天堂應該是圖書館的模樣。 — 波赫士《關於天賜的詩》 本篇文章將介紹組織程式碼的方法,包括以類似功能或屬性歸類...

2018-01-02 ‧ 由 林萌 分享
DAY 15

[第 15 天] 擁抱 Clojure:命名空間與專案(二)

命名空間與專案(二) 命名空間 保護資訊 以上的函式都會引用到命名空間中的公開資訊,如果有些資訊想要隱藏不被使用,可以在使用 def 設立 Vars 物件時加上...

2018-01-03 ‧ 由 林萌 分享
DAY 16

[第 16 天] 擁抱 Clojure:命名空間與專案(三)

命名空間與專案(三) 編輯器 俗話說:工欲善其事,必先利其器。好的編輯器能夠讓你更輕鬆地輸入程式、容易地測試程式,或是提供有用的資訊修正錯誤。以下介紹開發 Cl...

2018-01-04 ‧ 由 林萌 分享
DAY 17

[第 17 天] 擁抱 Clojure:資料型別與協定(一)

資料型別與協定(一) 計算機科學有兩大難題:快取失效,爲事物命名以及差一錯誤。 — 菲爾•卡爾頓 我們以程式語言中的物件,數值與函式形塑真實世界,雖然 Cl...

2018-01-05 ‧ 由 林萌 分享
DAY 18

[第 18 天] 擁抱 Clojure:資料型態與協定(二)

資料型別與協定(二) 擴充 雖然可以使用 deftype、defrecord 或 reify 實作介面或協定,但是缺點是必須在定義型別時就確認,Clojure...

2018-01-06 ‧ 由 林萌 分享
DAY 19

[第 19 天] 擁抱 Clojure:與 Java 共舞(一)

與 Java 共舞(一) Clojure 寄生於 Java 之中,汲取它的養分並試圖解放它的繁重。Java 有優秀的即時編譯 (Just-in-time com...

2018-01-07 ‧ 由 林萌 分享
DAY 20

[第 20 天] 擁抱 Clojure:與 Java 共舞(二)

與 Java 共舞(二) 從 Clojure 呼叫 Java 匿名類型 在前一章提到過的 reify 巨集,能夠用來繼承父類別,產生匿名類別: (.listFi...

2018-01-08 ‧ 由 林萌 分享