Haskell-在配对列表中搜索

Haskell-在配对列表中搜索,haskell,Haskell,我正在尝试制作一些东西,这样它会获取一本书和一个字符串,然后返回与书中的字符串关联的值。。。到目前为止,我得到的是: data Answer = T | F deriving (Eq, Show, Ord) type Book = [(String, Answer)] testBook :: Book testBook = [("aT", T), ("bF", F)] 我想这样做,让我们假设: test testBook "aT" ^答案将由T得出 我在做一些事情,比如: t

我正在尝试制作一些东西,这样它会获取一本书和一个字符串,然后返回与书中的字符串关联的值。。。到目前为止,我得到的是:

data Answer = T | F
    deriving (Eq,  Show, Ord)

type Book = [(String, Answer)] 

testBook :: Book
testBook = [("aT", T), ("bF", F)]
我想这样做,让我们假设:

test testBook "aT"
^答案将由T得出

我在做一些事情,比如:

test::Book->String->Answer
test a b = [x | (y, x) <- a, y == b] 
test::Book->String->Answer

测试a b=[x |(y,x)您的代码在正确的轨道上。现在,无论
b
的值是多少,您都会得到一个答案列表。您需要添加一个条件来检查元组的第一项是否等于
b
;为此,您必须给它一个名称,而不是使用

可以使用逗号和表达式向列表中添加条件:

[x | x <- a, x > 10]
[x | x 10]
例如,将获取
a
中大于10的所有值


我会让你自己想出如何把我的建议组合起来。

你的代码走上了正确的轨道。现在,不管
b
的值是多少,你都会得到一个答案列表。你需要添加一个条件来检查元组的第一项是否等于
b
;要做到这一点,你必须给它一个名称,而不是u唱

可以使用逗号和表达式向列表中添加条件:

[x | x <- a, x > 10]
[x | x 10]
例如,将获取
a
中大于10的所有值


我会让你自己想出如何把我的建议组合起来。

使用“查找”功能(在前奏曲中提供)。

使用“查找”功能(在前奏曲中提供)。

这很有帮助。现在我正在尝试:测试::书本->字符串->回答测试AB=[x |(y,x)列表理解总是返回一个列表。因此,您返回的是一个答案列表,而不是一个。这很有帮助。现在我正在尝试:test::Book->String->Answer test A b=[x |(y,x)列表理解总是返回一个列表。因此,您返回的是一个答案列表,而不仅仅是一个。查找功能是您在现实生活中如何实现的,但当您学习Haskell时,自己实现它是很好的。@TikhonJelvis:是和否。我同意重新发明小轮子有助于熟悉Haskell,但Haskell哈“大量的内置库函数都在乞求使用……查找函数是你在现实生活中应该如何实现它的,但是当你学习Haskell时,自己实现它是很好的。@TikhonJelvis:是和否。我同意重新发明小轮子有助于熟悉Haskell,但Haskell有大量的内置库函数。”请不要“编辑”你的问题。StackOverflow的整个想法是,其他有同样问题的人可以在浏览网站时找到问题和给出的答案。请不要“编辑”你的问题。StackOverflow的整个想法是,其他有同样问题的人可以在浏览网站时找到问题和给出的答案。