搜索超过2个元素的元组

use*_*712 -1 haskell

如何根据第一个元素或第二个或第三个元素搜索元组?

我知道如何搜索两个元组,但我怎么做两个以上呢?

type Stuff = (String, String, Int)

testStuff :: [Stuff]
testStuff = [
    ("beans","black",5),
    ("cod","fish",4),
    ("coke","diet",3)
]
Run Code Online (Sandbox Code Playgroud)

如何编写一个搜索"Stuff"并返回"int"值的函数?

例如,searchStuff"beans"应该返回5.

Zet*_*eta 7

由于您没有提供在对列表中搜索的功能,我将假设您使用了lookup.让我们专注于find您的新功能.find可以在Data.List(以及更通用的版本Data.Foldable)中找到并具有以下类型:

find :: (a -> Bool) -> [a] -> Maybe a
Run Code Online (Sandbox Code Playgroud)

现在,如果你需要根据第一个元素在三元组列表中找到一些东西,你可以使用

find (\(a,_,_) -> a == "beans") testStuff
Run Code Online (Sandbox Code Playgroud)

但是,这将留给你一个Maybe Stuff.但由于Maybe是一个实例Functor,很容易将结果更改为Maybe Int(并留作练习).