我最近开始学习 Haskell,现在在我的课堂上,我们构建了一个 Peano 数字类并将其实例化到 Num 类型类中。
在讲座中,我的教授声称,根据您是否将后继函数视为S x = x + 1
或S x = 1 + x
,乘法定义的适当后继情况会有所不同。分别:
x * S y = x * y + x
x * S y = x + x * y
此外,他声称使用这两种选择中的第一种更可取,因为它更懒惰,但我很难看到这是怎么回事。
我们查看了添加定义的示例
x + S y = S (x + y)
好于
x + S y = S x + y
因为评估x + y == z
发生得更快,但我找不到类似的乘法案例。
讲义在这里:http ://cmsc-16100.cs.uchicago.edu/2014/Lectures/lecture-02.php