處理清單

要處理列表,我們可以簡單地對列表型別的建構函式進行模式匹配:

listSum :: [Int] -> Int
listSum []          = 0
listSum (x:xs) = x + listSum xs

我們可以通過指定更復雜的模式來匹配更多值:

sumTwoPer :: [Int] -> Int
sumTwoPer [] = 0
sumTwoPer (x1:x2:xs) = x1 + x2 + sumTwoPer xs
sumTwoPer (x:xs) = x + sumTwoPer xs

請注意,在上面的示例中,我們必須提供更詳盡的模式匹配來處理奇數長度列表作為引數給出的情況。

Haskell Prelude 定義了許多用於處理列表的內建函式,如 mapfilter 等。如果可能,你應該使用這些內建而不是編寫自己的遞迴函式。