繁体   English   中英

直观地讲,Haskell如何在不使用标准长度函数的情况下找到列表的长度?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM