模式匹配列表元素

per*_*nto 1 haskell

有没有办法查看列表,当您找到值4和5时,做一些事情?

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

yat*_*975 5

您还可以描述应该发生什么,当你找4,5!

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

foo :: [Int] -> String
foo (4:5:xs) = "Found"
foo (_:xs) = foo xs
foo [] = "Not found"
Run Code Online (Sandbox Code Playgroud)

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

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

我会使用第二个版本,这样你就不必记住"未找到"的值.