列表上的模式匹配

我們可以在列表上匹配任何其他資料型別,儘管它們有點獨特,因為構建列表的建構函式是中綴函式::。 (有關其工作原理的更多資訊,請參閱建立列表示例。)

matchMyList : List SomeType -> SomeOtherType
matchMyList myList = 
    case myList of
        [] -> 
            emptyCase

        (theHead::theRest) ->
            doSomethingWith theHead theRest

我們可以根據需要匹配列表中的多個元素:

hasAtLeast2Elems : List a -> Bool
hasAtLeast2Elems myList =
    case myList of
        (e1 :: e2 :: rest) -> 
            True
    
        _ -> 
            False

hasAtLeast3Elems : List a -> Bool
hasAtLeast3Elems myList =
    case myList of
        (e1 :: e2 :: e3 :: rest) -> 
            True
    
        _ -> 
            False