推 stopcrying: 推推推 XD 11/21 16:07
※ 編輯: drm343 (36.236.16.4), 11/21/2015 16:47:37
推 CindyLinz: 推~~ 11/21 18:23
推 DBoyX: 推~~ 11/21 23:33
推 suhorng: 借轉 11/22 11:06
※ suhorng:轉錄至看板 Programming 11/22 11:06
※ suhorng:轉錄至看板 Programming 11/22 18:04
推 s9041200: 推~~ 11/23 16:26
推 whitglint: 推推~ 11/27 08:43
推 suhorng: 是 w 大! 11/27 12:28
→ drm343: 是 w 前輩,推推 11/27 16:50
推 descent: 推 11/28 12:19
今日結束了,感謝大家參與,這邊下收今天的一些心得跟事件。
先說跟這本書無關的部份,以後應該會固定一個月一次,地點也會更換,
歡迎各位提供地點,目前預計下次可能會在都提咖啡或是 k square 等地
點進行,考量點有下述三點。
1.
場地費在 1000 元以內,以目前的報名情況來說,之後的參加人數應該不
可能超過 10 人,所以不太可能去租借 2000 元以上的場地。
2.
必須能夠讓我們吵鬧而不會影響到附近客人,或是被附近客人影響到,特
別是介紹或講解到一半時,可能會講的比較興奮什麼的。
3.
下次開始會需要投影機跟擴音機,要讓北部的大大也有機會一起參與討論,
並且分享自己的看法。
然後建議參與者準備一本書,最好順便學一下 Ocaml,如果比較熟 Haskell
也可以參考下面的非官方實作,用 Ocaml 建議安裝 utop 這個工具,是個
不錯直譯器。
Ocaml 版的官方教學程式碼:
http://www.cis.upenn.edu/~bcpierce/tapl/checkers/
Haskell 版的讀者教學程式碼:
https://code.google.com/p/tapl-haskell/
如果需要分享一些 type rule 而需要輸入數學符號時,可以使用下面這個
網址提供的工具,它可以產生分享連結,覺得網址太長可以縮網址。
http://goo.gl/laCai4
=================================================================
大致上是這樣了,下面說說一些跟書有關的內容。
這本書第一章介紹的是歷史,不過這部份我基本上直接跳過了,有興趣的人
可以自行閱讀,也許下次有沒參加過讀書會的人參加時,可以再拿這章出來
簡單介紹一下。
第二章講的是書中用到的數學知識,基本上就是集合論那一塊,直接跳過還
是可以讀的,但書中一些需要用到數學的地方可能會卡住。
第三章開始會介紹什麼叫作 untyped system,這不是說這個系統沒有 type
的意思,而是指不做 type check。
後續會開始介紹什麼叫作 simply type system,這是最簡單的型別系統,據
說只要會這個,簡單變形一下就能得到 haskell 使用的 hindley-milner system
了,但我自己對 HM system 以及 simply type system 沒這麼深入的了解,
所以還不知道這部份要怎麼實作。
介紹完 simply 就會開始介紹 subtype system,這個跟 oop 有關,以後讀到
這邊可以做更深入的分享,之後會是 Recursive Types 等等的系統,有興趣的
人可以上 TaPL 的官網或其他地方參考看看目錄,這部份就不多說了。
今天還沒有比較深入的探討,所以先補上兩個有講到的問題。
Q:
為什麼這本書用 Ocaml 而不是 Haskell 當實作範例用的語言?
A:
可能是作者比較熟 Ocaml ,理論上可以用任何語言實作,但最終建議使用有
GC 跟 pattern match 的語言會比較簡單。
--------------------------------------------------------------------
Q:
根據書中 48、49 頁的程式碼,如果執行 eval TmSucc(info, TmTrue) 則 eval1
應該會回傳 TmSucc(info, TmTrue),然後 eval 又會跑去執行 TmSucc(info, TmTrue),
於是變成無窮迴圈,為什麼實際實行結果卻沒有發生這樣的狀況?
(* eval 函數定義 *)
let rec eval t =
try let t' = eval1 t
in eval t'
with NoRuleApplies -> t
A:
因為 eval1 計算 TmTrue 時會產生 NoRuleApplies 使程式停止計算。
--------------------------------------------------------------------
我比較有印象的大致上是這樣了,其他我沒提到的部份就要請其他有參加的人
補充了。
※ 編輯: drm343 (36.236.18.75), 11/28/2015 23:20:25
推 DBoyX: 天吶太強了超級用心膜拜!!!!!! 11/28 23:54
推 DBoyX: 關於 why ocaml 的問題,可以參考 Chapter 4 第一段的內容 11/28 23:57