模式匹配列表元素

时间:2012-10-13 19:44:24

标签: haskell

有没有办法查看列表,当你找到值4和5时,做点什么?

我试过foo (4:5:xs) = <do something>但是没有编译

1 个答案:

答案 0 :(得分:5)

当你找到4和5时,你还必须描述会发生什么!

假设您在看到4和5时要返回字符串"Found",否则返回"Not found"。然后你可以使用这个功能:

foo :: [Int] -> String
foo (4:5:xs) = "Found"
foo (_:xs) = foo xs
foo [] = "Not found"

如果你不想在没有看到4和5的情况下“做任何事情”,你必须将函数的返回类型更改为Maybe String(在本例中):

foo :: [Int] -> Maybe String
foo (4:5:xs) = Just "Found"
foo (_:xs) = foo xs
foo [] = Nothing

我会使用第二个版本,这样您就不必记住'未找到'的值。