Lobsters | 原文链接 | 2026-08-27 收录

ReaderT 设计模式:Haskell 应用的标准架构

来源: academy.fpblock.com — 2017-06

概述

FP Complete 的经典博文介绍 Haskell 应用中「ReaderT Env IO」这一标准设计模式。核心思想是:应用定义唯一的核心类型 Env,统一承载运行时配置、可 mock 的全局函数(如日志、数据库)以及用 IORef/TVar 表示的必要可变状态,业务代码整体跑在 ReaderT Env IO 中。文章对比了编译期条件编译、unsafePerformIO 全局值等替代方案,论证为何显式/隐式传入配置更优,并说明用 mtl 风格的 typeclass(MonadReader/MonadIO)可以部分恢复纯度。

核心要点

金句

全局变量不好,可变全局变量更是糟糕得多。
返回 Lobsters 首页