【发布时间】:2014-08-18 07:09:20
【问题描述】:
Haskell definition 说:
一个表达式是弱头范式(WHNF),如果它是:
- 构造函数(最终应用于参数),例如 True、Just(正方形 42)或 (:) 1
- 一个内置函数应用于太少的参数(可能没有),例如 (+) 2 或 sqrt。
- 或 lambda 抽象 \x -> 表达式。
为什么内置函数会受到特殊对待?根据 lambda 演算,部分应用函数与任何其他函数之间没有区别,因为最后我们只有一个参数函数。
【问题讨论】:
-
我冒昧地编辑了 Haskell wiki 页面,并解释了为什么内置函数和 lambdas 之间的这种区别与语义无关。 (还有一个关于严格构造函数字段的微妙之处的注释。)
-
顺便说一句,该 wiki 页面实际上并不是 Haskell's official definition 的一部分。然而官方报告甚至没有提到这个问题,似乎更愿意假设读者知道指称语义......
标签: haskell lambda-calculus reduction partial-application weak-head-normal-form