我想转换这个元组列表:
[(1,'a'),(2,'b') ... ]
进入一个可以写成这样的函数:
g :: Int -> Char
g 1 = 'a'
g 2 = 'b'
.
.
.
用例:
g 1 -- | 'a'
答案 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')]