作者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/cn.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