列表上的模式匹配
我们可以在列表上匹配任何其他数据类型,尽管它们有点独特,因为构建列表的构造函数是中缀函数::
。 (有关其工作原理的更多信息,请参阅创建列表示例。)
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