Haskell - 搜索对列表

时间:2012-02-21 04:23:39

标签: haskell

我正在尝试制作一些东西,以便它需要一本Book和一个字符串,然后返回与书中字符串相关联的值...所以我到目前为止所拥有的是:

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] 

但我知道完全关闭..如何比较字符串与本书中的字符串?看起来很简单,但Haskell的语法很难习惯

2 个答案:

答案 0 :(得分:3)

使用“查找”功能(Prelude中提供)。

答案 1 :(得分:2)

您的代码在正确的轨道上。现在,您将获得的答案列表,无论的值是b。您需要添加一个条件来检查元组的第一项是否等于b;要做到这一点,你必须给它一个名字,而不是使用_

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

[x | x <- a, x > 10]
例如,

会从a大于10的所有值中获取。

我会让你弄清楚如何将自己的建议放在一起。

相关问题