[英]Intuitively, how does Haskell find the length of a list without using a standard length function?
我刚开始学习Haskell,并试图编写一个计算列表中元素数量的程序。 我在网上找到了以下代码:
listnumber :: [Int] -> Int
listnumber [] = 0
listnumber (x:xs) =1 + listnumber xs
加载GHCi后,程序将按预期返回列表的长度。 但是这段代码如何直观地工作?
1| listnumber :: [Int] -> Int
2| listnumber [] = 0
3| listnumber (x:xs) =1 + listnumber xs
第一行几乎说,该函数接受一个以Int作为参数的列表并返回一个Int。
第二行是边缘情况,这意味着如果您使用空列表调用该函数,它将返回0。
第三行使用模式匹配来切掉列表的第一个元素( x
)和其余元素( xs
)。 现在,您只需为元素x
添加1,然后使用列表的其余部分再次调用该函数(递归),该操作将一直进行到遇到边缘情况(一个空列表)为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.