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

我为什么对 effect systems 感到兴奋:可组合、可测试的库

来源: osa1.net — 2025-06-28

概述

作者想象一种语言:函数、模块、库必须在类型里声明它们对共享资源(调度器、文件系统、socket、定时器)的交互,而调用方对被调函数如何使用这些资源拥有完全的控制。在这样一个语言里,测一个读写文件的库可以无缝换用内存文件系统而无需预先规划;测轮询加 sleep 的代码可以快进时间而不用真等。effect system 的价值不在于“让你能做 effect”,而在于你“默认就能”获得可组合、可测试的系统,不必刻意为之设计。作者用 Koka 写了一个 grep 示例展示 handler 如何把真实 IO 与内存替身互换,指出今日语言里几乎什么都能做,真正的差异在于“惯用且高性能”的做法是什么——而一个让 effect 成为默认而非例外的语言今天还不存在。

核心要点

金句

The point with effect systems is that, you don't get a composable and testable system when you design for it, you get it by default.(effect system 的意义在于,可组合、可测试的系统不是你专门设计出来的,而是默认就有的。)
返回 Lobsters 首页