Jared Forsyth 介绍论文《Flow Typing: A New Lens on Linearity》。线性类型要求每个值恰好使用一次,好处是强制显式释放、让「忘关数据库连接」变成类型错误,代价是值被用第二次就得一路手动穿针。既有方案靠给语言加新特性来缓解,反而把核心语义搞复杂。流式类型改用透镜理论:用透镜项在受控范围内修改带状态的类型上下文,因为是纯函数式的,直接落在标准线性 lambda 演算里,语义简单直接。作者正把这套执行模型实装进自己的新语言。
🔑 核心要点
线性系统最实用的收益是静态可查的强制释放:漏掉 close 就报「必须恰好使用一次,实际使用 0 次」
另一个收益是纯度:不靠不可变性也能保证同样输入得到同样输出,因为副作用要靠值的使用顺序来串
所谓穿针问题,就是值被多处使用时必须在每处显式传递,写起来像在传状态
流式类型的巧妙处在于不改核心语言:透镜项直接操作类型上下文,不需要新增语言构造
作者给了两份材料:论文导读与实装时的现场笔记,后者面向已熟悉论文的读者
💡 金句
Because this approach is purely functional, it can be implemented in a standard linear lambda calculus, providing flow typing with a simple and direct semantics.