Haskell 模式匹配列表元素

Haskell 模式匹配列表元素,haskell,Haskell,有没有一种方法可以查看列表,当你找到值4和5时,做些什么 我尝试了foo(4:5:xs)=,但它没有编译您还必须描述当您没有找到4和5时会发生什么 假设您希望在看到4和5时返回字符串“Found”,否则返回字符串“notfound”。然后您可以使用此功能: foo :: [Int] -> String foo (4:5:xs) = "Found" foo (_:xs) = foo xs foo [] = "Not found" 如果在看不到4和5时不想“做任何事情”,则必须将函数的返回类

有没有一种方法可以查看列表,当你找到值4和5时,做些什么


我尝试了
foo(4:5:xs)=
,但它没有编译

您还必须描述当您没有找到4和5时会发生什么

假设您希望在看到4和5时返回字符串
“Found”
,否则返回字符串
“notfound”
。然后您可以使用此功能:

foo :: [Int] -> String
foo (4:5:xs) = "Found"
foo (_:xs) = foo xs
foo [] = "Not found"
如果在看不到4和5时不想“做任何事情”,则必须将函数的返回类型更改为
可能是String
(在本例中):


我会使用第二个版本,这样您就不必记住“未找到”值是什么。

您还必须描述当您没有找到4和5时会发生什么

假设您希望在看到4和5时返回字符串
“Found”
,否则返回字符串
“notfound”
。然后您可以使用此功能:

foo :: [Int] -> String
foo (4:5:xs) = "Found"
foo (_:xs) = foo xs
foo [] = "Not found"
如果在看不到4和5时不想“做任何事情”,则必须将函数的返回类型更改为
可能是String
(在本例中):


我会使用第二个版本,这样您就不必记住“未找到”值是什么。

您到底尝试了什么?您显示的片段既没有本地模式绑定,也没有函数绑定或其他东西,这只是一个失败。这就是说,像
(4:5:xs)
这样的模式确实应该有效。@Ingo谢谢-只要我知道它应该有效,也许引用错误消息是个好主意?否则,这一定是因为
不是有效的haskell表达式
foo xs=[y | x您到底尝试了什么?您显示的片段既没有本地模式绑定,也没有函数绑定或其他东西,这只是一个失败。也就是说,类似
(4:5:xs)的模式
确实应该有效。@Ingo谢谢-只要我知道应该有效也许引用错误消息是个好主意?否则,一定是因为
不是有效的haskell表达式
foo xs=[y | x