我在这个页面上工作
http://www.haskell.org/haskellwiki/99_questions/Solutions/4
我理解每个函数的含义,并且很高兴看到一个函数可以以多种方式定义。但是,我刚开始想知道哪个更快。我认为它会是它所说的length
那个Prelude
。
length [] = 0
length (x:xs) = 1 + length xs
但是,这比length
.Prelude
在我的计算机length
上,Prelude
返回长度为[1..10^7]
0.37 秒。然而,如上定义的函数需要 15.26 秒。
我定义了自己的长度函数,它使用了一个累加器。只用了 8.99 秒。
我想知道为什么会出现这些大差异?