簡體   English   中英

對 haskell function 感到困惑以獲取列表的長度

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

在簡單的英語中,這意味着“列表的長度以任何元素 ( _ ) 開頭,后跟元素xs1加上列表xs的長度”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM