如何从元组列表中构建函数?

时间:2013-05-27 00:05:32

标签: haskell

我想转换这个元组列表:

[(1,'a'),(2,'b') ... ]

进入一个可以写成这样的函数:

g :: Int -> Char
g 1 = 'a'
g 2 = 'b'
 .
 .
 .

用例:

g 1  -- | 'a'

1 个答案:

答案 0 :(得分:13)

此类功能的签名为[(a, b)] -> a -> b。这听起来像是一个常见的操作,所以let's search on Hoogle看它是否已经存在。哦,它差不多了,它被称为lookup

lookup :: Eq a => a -> [(a, b)] -> Maybe b
     

lookup key assocs在关联列表中查找密钥。

我们需要做的是翻转前两个参数(使用flip)并从结果中删除Maybe(用fromJust组成)。结果:

g :: Int -> Char
g = fromJust . flip lookup [(1,'a'),(2,'b'),(3,'c')]