Lobsters | 原文链接 | 2026-09-03 收录

把 Haskell 的 effect system 改称 capability system,为什么更准确

来源: h2.jaguarpaw.co.uk — 2026-09-06

概述

作者 Tom Ellis 解释他为何决定把 Haskell effect system Bluefin 从“effect system”改称为“capability system”。capability(能力)本是一个源自安全领域的 OS 概念:一个程序实体既指代某个资源又授予访问它的权限,文件句柄就是最典型的例子。作者论证 effect system 与 capability system 本质上是同一回事——无论是类型层面的约束(effectful/MTL)还是值层面的参数(Bluefin 的 Database es、Throw String es),其作用都是把“能执行哪些外部可见行为”限制在指定集合内,而这恰恰是 capability 的定义。改名的三个理由:更符合概念本源、避免让外人误以为 Haskell 需要什么“特殊系统”才能做 effect、以及“capability systems can be used to constrain architecture”这句话比“effect systems”更自然地道,尤其在 AI 生成代码的时代,能力系统是约束架构边界、保障安全的关键工具。

核心要点

金句

Capability systems can be used to constrain architecture — you give each component in your architecture the capability to perform only what it needs to.(能力系统可以用于约束架构——给每个组件它真正需要的那份能力就够了。)
返回 Lobsters 首页