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

《惰性求值不完全指南》:理解 Haskell 的时间、内存与模块化代码

来源: apfelmus.nfshost.com — 2015-03-07

概述

Heinrich Apfelmus 在 apfelmλus 上长期维护的教程系列索引页——戏称「不完全指南」。惰性求值是执行 Haskell 代码最主流的方式,它决定了程序的时间与内存占用,也带来强大的模块化能力。该系列从三篇主干教程入手:第一篇解释惰性求值究竟如何工作、对时间与内存意味着什么;第二篇讨论为什么用惰性求值、它如何帮你写出清晰模块化、可自然利用无限列表的代码;第三篇则从指称语义讲清「惰性求值算出的到底是什么」,澄清即便不了解求值过程也能理解程序计算的结果,并介绍严格函数这一在优化讨论中反复出现的关键概念。此外还附有推理空间占用(space invariants)与运行时间(debit method)的工具文章。是系统学习 Haskell 惰性求值的一份经典中文常被引用为入门的路线图。

核心要点

金句

Lazy evaluation controls the how, but not the what of a Haskell program.(惰性求值控制的是一个 Haskell 程序「如何」被计算,而非它「算出什么」。)
返回 Lobsters 首页