作者drm343 (一卡)
看板PLT
標題[情報] Types and PL 高雄線下讀書會
時間Sat Nov 21 15:55:09 2015
主題:
幾位高雄的朋友將在 11/28 開始舉辦 TaPL(Types and Programming Language) 讀書會,
如果對程式語言設計原理原則,型別系統有興趣的朋友,歡迎一起來讀書。
除了線下的讀書會,也會同時進行線上聊天室的討論與分享,讓不在高雄但有興趣的朋友
也有機會參加並分享自己的看法。
預定第一次聚會先至少讀完 untyped lambda system。
書中實作採用的是 Ocaml 這個程式語言,有興趣的朋友也可以改用其他語言實作。
沒有書的朋友,也可以參考放在 github 上的 issue 或是參考文獻,相關連結放在最下
方。
目前還有蠻多事項需要討論與決定,歡迎上 irc #cschat.tw 或透過 github 發 issue
參與討論。
地點:彩色巴黎 / 高雄市左營區富民路391號(暫定)
時間:2015-11-28 14:00 ~ 17:30
報名連結:
http://tapl.kktix.cc/events/d79d3108
參考連結:
github repo 存放相關文獻或 issue
https://github.com/cschat-tw/StudyGroup-TAPL/issues
--------------------------------------------------------------------------
好像還有什麼東西沒補充的感覺,但暫時還沒想到,上禮拜在 irc 提說想要在高雄辦場
TaPL 的讀書會,馬上有熱情的大大們幫忙,謝謝大家。
希望之後參與人數能變多,然後去借個場地來舉辦。
這本書基本上是在討論程式語言中,如何實作型別系統 (type system) 以及相關數學理
論,從最基本的 typechecker、error handle、跟 oop 相關的 subtype 一路介紹到
Higher-Order system,可以算是一本 type system 的入門書。
讀這本書你不需要懂 compiler 怎麼實作,但需要學過 Ocaml。
--------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.16.4
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PLT/M.1448092513.A.68B.html
1F:推 stopcrying: 推推推 XD 11/21 16:07
※ 編輯: drm343 (36.236.16.4), 11/21/2015 16:47:37
2F:推 CindyLinz: 推~~ 11/21 18:23
3F:推 DBoyX: 推~~ 11/21 23:33
4F:推 suhorng: 借轉 11/22 11:06
※ suhorng:轉錄至看板 Programming 11/22 11:06
※ suhorng:轉錄至看板 Programming 11/22 18:04
5F:推 s9041200: 推~~ 11/23 16:26
6F:推 whitglint: 推推~ 11/27 08:43
7F:推 suhorng: 是 w 大! 11/27 12:28
8F:→ drm343: 是 w 前輩,推推 11/27 16:50
9F:推 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
10F:推 DBoyX: 天吶太強了超級用心膜拜!!!!!! 11/28 23:54
11F:推 DBoyX: 關於 why ocaml 的問題,可以參考 Chapter 4 第一段的內容 11/28 23:57