【发布时间】:2014-07-21 18:44:14
【问题描述】:
我正在阅读 Haskell School of Expression 的第 69 页,我不确定我是否得到了rev [1:2:3:4] 的评估是否正确。
Hudak 在他的书中没有详细解释reverse 的评估(重写)顺序。
请有人确认我的猜测(如附图所示)是正确的,或者如果不正确,请指出我错了什么。我相信它是正确的,但我不是 100% 肯定,这就是问的原因。
所以问题是:
当我评估reverse 的一个步骤然后在评估之后(即重写)结果应该用括号括起来,对吗?
如果我理解正确,括号的这些不幸出现是reverse 时间复杂度差(读取二次)的原因。在此示例中,总共花费了 6 个步骤来添加列表以反转 4 元素列表。
【问题讨论】:
-
它看起来只是一个“错字”,但是您对
rev的定义是错误的,您应该在(x:xs)案例的右侧使用++而不是:。 -
看起来您的评估顺序是正确的,但是对于为什么这很慢的一些解释,请查看this 问题。
-
谢谢 bheklir,确实是一个错字。
标签: haskell