並行與併發(二) 並行 pmap 先前的章節已經看過的 map 函式,功能是將群集的各個元素套用到函式之中,產生新的群集。如果被套用的函式需要長時間的運算,等待...
並行與併發(一) 建構軟體設計有兩種方式:一種是簡單明顯地沒有缺陷,另一種則是複雜到沒有明顯的缺陷。 — 東尼•霍爾 現代計算機系統走向多核,爲了運用多核心...
讀取器與詮釋資料(二) 詮釋資料 (Metadata) 詮釋資料是添加在符號或群集中的映射,其中記載了該符號或群集的資訊。使用 with-meta 函式添加詮釋...
讀取器與詮釋資料 你就要開始讀伊塔羅•卡爾維諾的新小說《如果在冬夜,一個旅人》。 — 卡爾維諾《如果在冬夜,一個旅人》 Clojure 程式開始於一串文字,...
與 Java 共舞(三) 從 Clojure 呼叫 Java 有用的工具函式 doto doto 巨集將第一個參數傳遞給其後運算式當作第一個參數。它將以下層疊的...
與 Java 共舞(二) 從 Clojure 呼叫 Java 匿名類型 在前一章提到過的 reify 巨集,能夠用來繼承父類別,產生匿名類別: (.listFi...
與 Java 共舞(一) Clojure 寄生於 Java 之中,汲取它的養分並試圖解放它的繁重。Java 有優秀的即時編譯 (Just-in-time com...
資料型別與協定(二) 擴充 雖然可以使用 deftype、defrecord 或 reify 實作介面或協定,但是缺點是必須在定義型別時就確認,Clojure...
資料型別與協定(一) 計算機科學有兩大難題:快取失效,爲事物命名以及差一錯誤。 — 菲爾•卡爾頓 我們以程式語言中的物件,數值與函式形塑真實世界,雖然 Cl...
命名空間與專案(三) 編輯器 俗話說:工欲善其事,必先利其器。好的編輯器能夠讓你更輕鬆地輸入程式、容易地測試程式,或是提供有用的資訊修正錯誤。以下介紹開發 Cl...
命名空間與專案(二) 命名空間 保護資訊 以上的函式都會引用到命名空間中的公開資訊,如果有些資訊想要隱藏不被使用,可以在使用 def 設立 Vars 物件時加上...
命名空間與專案(一) 我心裡一直都在暗暗設想,天堂應該是圖書館的模樣。 — 波赫士《關於天賜的詩》 本篇文章將介紹組織程式碼的方法,包括以類似功能或屬性歸類...
流程控制(三) 列表推導 Clojure 中的 for 與一般程式語言的 for 不同,它利用一個群集作爲來源,運用運算式以及條件式產生新的群集,這稱作列表推導...
流程控制(二) 迭代 由於 Clojure 中的資料結構都是不可變 (Immutable),所以沒有主流程式語言的 for 迴圈,因爲 for 迴圈需要在每次迭...
流程控制(一) 流程控制是枝幹、河流與道路,將如同樹葉、土地與城市一樣的函式連結起來,藉由流程控制,程式可以選擇行走的方向,前進後退、左右轉或是不斷反覆。 本篇...
遞迴 一般遞迴 遞迴是函式透過不斷呼叫自己,將問題切割成數個細小問題逐個解決之後,把結果統整起來的問題解決方式。函數式程式設計語言透過遞迴達成迴圈可以做到的事。...
繫結與函式(三) 函式 高階函式 之前提到,函式在 Clojure 中是一等公民,像資料一樣,可以當成參數傳遞給其它函式,或可以被當成返回值傳遞。而可以做到其中...
繫結與函式(二) 函式 多載 Java 中將類別裡擁有數個同樣名字的方法 (Method),參數個數卻不同稱爲多載 (Overloading),Clojure...
繫結與函式(一) 函式是函數式程式設計的核心,雖然各個流派談及函數式程式設計,都有自己的定見和看法,但是不變的核心仍然是函式,函式必須是程式語言的第一級公民 (...
資料結構與型態(三) 群集 Clojure 的複合型別稱爲群集 (Collection),可以容納基本型別跟複合型別,所有的群集都是不可變 (Immutable...
資料結構與型態(二) 字串與字符 Clojure 的字串即是 Java 的 String 類型,表現方法也跟 Java 一樣用雙引號包住文字: (class &...
資料結構與型態(一) 本篇文章將介紹 Clojure 內建的的資料結構與型態,會先從簡單的資料型態如數字及字串開始,再介紹複雜的資料結構如群集 (Collect...
基本組成(二) 資料型態 布林 Clojure 程式語言使用 true 和 false 來表示邏輯上的真與假: true ;; => true false...
基本組成(一) 運算式 Clojure 程式是由許多運算式 (Expression) 組合而成。在 Clojure 中,Expression (運算式) 也被稱...
前言 世界太新,很多事物還沒有名字,必須用手指頭伸手去指。 — 賈西亞•馬奎茲《百年孤寂》 Clojure 是什麼 Clojure 從 2007 年由創始人...
Clojure 的社群相對其他語言來說,平均程式能力較高(因為語言入門程度難,Clojure 多半是已經精通數種語言的工程師跨入函數式程式設計的語言)。底下介紹...
Packt 書目頁 這次鐵人賽介紹的《Clojure for Data Science》是一個從統計到機器學習的逐步教材。而這本同樣由 Packt 出版的 co...
本章所要討論的群聚算法(clustering analysis)是一種非監督式機器學習(unsupervised learning)。程式碼請參見 Chapte...