去年看 TaPL 有进展后,想问的第一个问题是,一般 CSIE 本科生
,是怎么接触像 TaPL 这样的教材的?
在那之前需要多少背景知识?
几周前才遇到同事说,他觉得 functional programming 除了装逼
外,不知道有什么用。还好 JavaScript 圈现在有 Promise, Rx
这些以组合为基础的工具,而且它们的接口是从 functional
language 来的,让我有切入点可以说明 FP 的好。
这几年非 CSIE 出身的程式设计师越来越多,如果哪天我得向同好
解释程式语言学厉害之处,总不好一开始就叫他吃 TaPL XD
以操作语意为例,因为我对 FP 的认识是从 lambda calculus 和
“把更好用的语法转译成 lambda calculus ”开始的。在看
TaPL 前,无法理解为什么要用操作语意来规定“看见什么之后要
变成什么”(不是都翻译成 lambda 就好了吗?),也没注意到
操作语意其实编码了 evaluation 的顺序。
※ 引述《suhorng ( )》之铭言:
: 一个场景是在原本语言之下还有抽象机器, 然后可以探讨抽象机
: 器与原本语言的解释器之间有什么关系. 这里会应用操作语意
: 又或者针对特定语言去应用操作语意来讨论 contextual
: equivalence 等等
像这两段我也还不懂,是用操作语意描述解释器怎么运作,再用它
描述抽象机器怎么运作,并比较两者的异同吗?更不用提后面
contextual equivalence 那段了。