有没有办法查看列表,当你找到值4和5时,做点什么?
我试过foo (4:5:xs) = <do something>
但是没有编译
答案 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
我会使用第二个版本,这样您就不必记住'未找到'的值。