| 程式人 | 林信良 | 程式學習 | Haskell | Monad

Haskell裡的不純粹

接觸純函數式的開發者,往往著重在如何撰寫純函式,然而若想以純函數式思考來解決現實的需求,對純函數式中非純粹部份的熟悉與掌控,絕對是必要的一環

2022-03-31

| Monoid | reduce | Haskell | 程式人 | 林信良 | 程式學習

從reduce認識Monoid

reduce的來源元素,需要有Monoid規範的結合律與恆等值,Monoid更接近純粹數學上的概念,是為了讓程式有更多的組合性

2022-03-24

| 程式人 | 林信良 | 程式學習 | Haskell | 型態類別 | 型態 | type

掌握Haskell型態類別

別從抽象的函式宣告理解Haskell型態類別!Haskell的型態類別並不是物件導向語言中的類別,也不是Java的interface或其他語言的類似物,它是觀察既有函式的重複、抽取重複後的行為規範!

2022-03-08

| 程式人 | 林信良 | 程式學習 | Haskell | 代數

從Haskell看代數資料型態

在Java領域,可能不知道「代數資料型態」這名詞,若從其他角度來認識record與sealed類別,多半也能掌握其應用方式;然而,如果可以的話,建議直接從Haskell認識代數資料型態的定義與應用

2022-03-02

| 程式人 | 林信良 | 程式學習 | 球面Voronoi | 程式碼 | 3D模型 | 極點投影 | 演算法

從無到有實現球面Voronoi

最近我用程式寫出了一顆平凡無奇的哈密瓜,如果你曾經思考過Voronoi的問題,應該會注意到我想傳達的重點,其實是球面Voronoi紋理的實現

2022-02-16

| 圖靈紋 | Turing pattern | 反應擴散系統 | Gray-Scott模型 | 程式人 | 林信良 | 程式學習

淺談反應擴散系統

關於熱帶魚身上花紋、花豹的斑點、乳牛的黑白斑塊,如何以程式碼實現出這些圖樣呢?令人意外地,需要的數學並不複雜,結合程式碼實作只要短短幾行,就能模擬出自然界許多的紋路樣貌!

2022-02-03

| 程式人 | 林信良 | 程式學習 | 生命遊戲 | State | Rule | 狀態模式

生命遊戲與狀態模式

生命遊戲涉及細胞的生存狀態,若想以物件導向方式實作,觀察既有程式碼,識別出提取規則用的狀態,會是以狀態模式為思考方向時的重點!

2022-01-27

| 程式人 | 林信良 | 程式學習 | 模式

模式是語言缺陷?

關於模式是語言缺陷的說法太過單純,模式誕生於規律性,而規律性來自於重複,別忘了運算的本質就是重複,運算的本質就是模式!

2022-01-20

| 程式人 | 林信良 | 程式學習 | tuple | 資料型態 | Python | TypeScript | 函數式 | 資料載體

簡便資料載體的tuple

在具備tuple資料型態的程式語言中,別將其視為有限制的list,我們應該從簡易資料載體的角度來思考,如此一來,就能善用tuple的特性,將其應用於適當的場合

2022-01-13

| 程式人 | 林信良 | 程式學習 | ES 11 | ECMAScript 11 | bigint | JavaScript | 大整數

ES11的bigint

bigint只是用來替代第三方大數運算程式庫的新特性嗎?那為什麼它是設計成基本型態,而不是個標準API呢?現有的number在整數上又有哪些問題呢?加入越基礎的新特性,越需要更多的考量

2022-01-06

| 程式人 | 林信良 | 程式學習 | HTTP請求 | Java | Java 11 | HttpClient API | Reactive

HTTP用戶端歷史與API架構

目前Java生態圈的HTTP用戶端選擇眾多,想從中挑出符合自身需求的方案,我們可以從歷史發展與API架構中,多做探討與研究

2021-12-29

| 程式人 | 林信良 | 程式學習 | 技術網站 | Markdown | 靜態網站產生器 | iThome鐵人賽

技術網站架設經驗雜談

基本上,相關的技術採用越是單純,在實際寫作時,你就越能集中心力,而基於這樣考量而成的系統規畫,就是架設技術網站時最好的方案

2021-12-23