From Cloud to Dirt

緣起

「雲泥之間」是一系列關於 Haskell 的教學/筆記文章。

最初的目的只是希望釐清幾個常見但是容易混淆的詞彙諸如 boxed 和 lifted 等等, 但是,隨著深入這些詞彙背後的情境,問題漸漸的形成了一個共同的問題: 「我們怎麼(在 Haskell 中)描述資訊(information1)」。 為了進一步地理解這個問題,便產生了這個系列文章。 也許最終沒有辦法有個結論或是答案,但是至少這系列的文章可以留下一些線索, 讓我們可以朝著答案前進。

系列結構與列表

我們更進一步地把問題粗略地分成三個不同的層次:

  1. 要怎麼在計算世界裡面表示資訊?
  2. 在 Haskell 的世界中資訊被怎麼表示?
  3. Haskell 怎麼表示資訊?

而這三個不同的問題有著各自專屬的理論領域以及著重的重點。 接著,我們根據這三個層次來將此系列文章分成三個子系列: 因為我們探討的是如何在程式(或計算)中表示資訊, 所以第一個子系列,「Denotational Semantics and Domain」, 將試著整理程式語意以及相關的數學背景。 一旦對於抽象資料建構有一定程度的理解了, 我們接著會在第二個子系列「Constructions on Datatype in Haskell」 試著歸納出 Haskell 中怎麼建構或是表示資訊的方法。 以及這些方法是怎麼對應到數學理論上面的。 最後,最終的子系列「Haskell, GHC and STG Machine」 則是嘗試理解 Haskell 底層怎麼提供 Haskell 能力去讓他可以如是表示資訊。 或者說,試圖去理解 Haskell 底層是怎麼實踐那些抽象的資訊表示方法的。

Denotational Semantics and Domain

Constructions on Datatype in Haskell

Haskell, GHC and STG Machine

參考資料

Stage I

Stage II

Stage III

其他或是無關的參考資料與註記

Text and how to pick a text library


  1. 這裡所謂的資訊 (information) 是泛指包含廣泛的資料 (data) 或是資料結構 (data structure) 等等。