念念不忘,必有迴響。有一口氣,點一盞燈,有燈就有人。

Haskell 之 Function

Haskell 之 Function

Function 為 Haskell 最重要的元素,首先來看 Haskell 如何定義 function,也順便複習 F# 、ECMAScript 與 C#。

如何執行 Haskell ?

如何執行 Haskell ?

Haskell 提供各種執行方式,除了可編譯之外,還提供 REPL、Script,也可直接在 IDE 內執行,非常方便。

ECMAScript 之 Asynchronous

ECMAScript 之 Asynchronous

ECMAScript 對 Asynchronous 總共有 Promise、Generator 與 Async Await 三種支援,其中 Generator 屬於較進階的應用,主要是在寫 library,但 Promise 與 Async Await 則非常重要,寫 application 也很常用到。

ECMAScript 之 Event Loop Model

ECMAScript 之 Event Loop Model

由於 JavaScript 是 Single Thread 語言,由於其 Single Thread 特色,對於繁重的運算動作,就無法如 C# 使用 Multi Thread 解決,因此 Asynchronous 在 JavaScript 格外重要。

Browser 使用獨特的 Event Loop Model 實現 Asynchronous,要能徹底了解其背後運作原理,才能掌握 JavaScript 的 Asynchronous。

ECMAScript 之 ES Module

ECMAScript 之 ES Module

ES5 很難寫大程式,主要是因為 JavaScript 沒有 Module 概念,常常一個檔案寫兩三千行程式,且大量使用 Global Variable 造成 Side Effect 很難維護。

早期 JavaScript 是使用 Module Pattern 解決,稍後更有 CommonJS 與 AMD 試圖制定 Module 標準,一直到 TC39 出手,在 ECMAScript 2015 定義 Module 後,JavaScript 的模組化總算塵埃落定,是 JavaScript 發展的重要里程碑。

Refactor to LINQ => Select

Refactor to LINQ => Select

LINQ 是 C# 3.0 實現 FP 重要里程碑,提供大量的 Operator,讓我們以 Pure Function 將 data 以 Dataflow 與 Pipeline 方式實現。本系列將先以 Imperative 實作,然後再重構成 FP,最後再重構成 LINQ Operator。

本文將討論 Select Operator。

ECMAScript 之 Const

ECMAScript 之 Const

const 也是 ECMAScript 2015+ 的代表 keyword,應盡量使用 const 避免 Side Effect,除非真的要修改變數。

FP 之 Yield 與 Lazy Evaluation

FP 之 Yield 與 Lazy Evaluation

為了使 function 重複使用能力更高,我們會盡量將 function 寫成 composable function,也因為如此,function 之間不斷地建立 data,且每個 function 又必須各自執行 for loop,這些都是執行效能殺手,而 YieldLazy Evaluation 讓我們優雅的解決這兩大難題。

ECMAScript 之 Let

ECMAScript 之 Let

ECMAScript 2015 是 JavaScript 歷史上最重要的一次升級,也讓 JavaScript 終於趕上主流程式語言的高度,若要明顯的分辨 ES5 與 ES6,最明顯的方式的方式就是看有沒有使用 let

發現 JavaScript 本質

發現 JavaScript 本質

大家在學習 JavaScript 時,是否覺得 JavaScript 跟主流 OOP 程式語言,如 C++ / Java / C# 不太一樣?為什麼 JavaScript 沒有 interface?為什麼 JavaScript 很難使用 OOP Design Pattern ?為什麼我會從很討厭 JavaScript 到很喜歡 JavaScript?

這要從 JavaScript 的本質談起,因為我看到了JavaScript 可愛的一面。