《惰性求值不完全指南》:理解 Haskell 的时间、内存与模块化代码
来源: apfelmus.nfshost.com — 2015-03-07
概述
Heinrich Apfelmus 在 apfelmλus 上长期维护的教程系列索引页——戏称「不完全指南」。惰性求值是执行 Haskell 代码最主流的方式,它决定了程序的时间与内存占用,也带来强大的模块化能力。该系列从三篇主干教程入手:第一篇解释惰性求值究竟如何工作、对时间与内存意味着什么;第二篇讨论为什么用惰性求值、它如何帮你写出清晰模块化、可自然利用无限列表的代码;第三篇则从指称语义讲清「惰性求值算出的到底是什么」,澄清即便不了解求值过程也能理解程序计算的结果,并介绍严格函数这一在优化讨论中反复出现的关键概念。此外还附有推理空间占用(space invariants)与运行时间(debit method)的工具文章。是系统学习 Haskell 惰性求值的一份经典中文常被引用为入门的路线图。
核心要点
- 惰性求值是执行 Haskell 最主流的方式,决定程序的时间与内存占用,并带来模块化能力
- 第一篇主干教程讲解求值如何工作及其对时间与内存的意义
- 第二篇讲惰性求值的价值:写出清晰模块化、可自然利用无限列表的代码
- 第三篇借指称语义厘清「惰性求值到底算什么」,并介绍严格函数概念
- 另附推理空间占用与运行时间的工具文章,构成完整学习路线
金句
Lazy evaluation controls the how, but not the what of a Haskell program.(惰性求值控制的是一个 Haskell 程序「如何」被计算,而非它「算出什么」。)
👍 0
👎 0
返回 Lobsters 首页