【发布时间】:2016-11-08 07:04:36
【问题描述】:
我对 Haskell 很陌生,我正在尝试定义自己的长度函数,如下所示:
lengthz :: [a] -> a
lengthz [] = 0
lengthz n = 1 + length (tail n)
为什么不能编译?或者,我的逻辑有问题吗?
谢谢!
【问题讨论】:
-
请注意,最好避免使用
tail,因为当您将空列表传递给它时,它可能会使您的程序崩溃。您应该尽可能使用(详尽的)模式匹配,这不会有同样的问题——例如lengthz (x:xs) = 1 + lengthz xs.