[英]confused about haskell function to get length of list
我正在學習 haskell基礎知識和列表部分的函數,它使用此表達式來獲取列表的長度
intListLength (_:xs) = 1 + intListLength xs
我已經嘗試用不同的值來操作它,即使表達式是加法的,它似乎也在相乘,盡管 function 正在返回列表長度的正確值。
我希望有人能夠解釋這里發生了什么。
intListLength :: [Integer] -> Integer
intListLength [] = 0
intListLength (x:xs) = 1 + intListLength xs
正如您鏈接的文檔所解釋的那樣:
第一個子句說空列表的長度為 0。第二個子句說如果輸入列表看起來像 (x:xs),即第一個元素 xconsed 到剩余的列表 xs 上,那么長度是多一個比 xs 的長度。
由於我們根本不使用 x,我們也可以用下划線替換它:intListLength (_:xs) = 1 + intListLength xs。
function intListLength
將列表中每個元素的運行總和加1
。 每次調用intListLength
時,都會從列表中彈出一個元素,並將1
添加到由對列表剩余元素的遞歸調用創建的運行總數中。 當列表中沒有更多元素時,匹配空列表 function 頭部並在總數中添加一個0
。 此時,將返回總數。
intListLength (_:xs) = 1 + intListLength xs
在簡單的英語中,這意味着“列表的長度以任何元素 ( _
) 開頭,后跟元素xs
是1
加上列表xs
的長度”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.