Haskell 如何从元组列表中构建函数?
我要转换此元组列表:Haskell 如何从元组列表中构建函数?,haskell,Haskell,我要转换此元组列表: [(1,'a'),(2,'b') ... ] 将其写入一个函数中,该函数可以如下所示: g :: Int -> Char g 1 = 'a' g 2 = 'b' . . . 用例: g 1 -- | 'a' 这样一个函数的签名将是[(a,b)]->a->b。这听起来像是一个常见的操作,所以要看看它是否已经存在。哦,差不多了,它叫: lookup key assocs在关联列表中查找密钥 我们需要做的是翻转前两个参数(使用flip)并从结果中去掉Maybe
[(1,'a'),(2,'b') ... ]
将其写入一个函数中,该函数可以如下所示:
g :: Int -> Char
g 1 = 'a'
g 2 = 'b'
.
.
.
用例:
g 1 -- | 'a'
这样一个函数的签名将是
[(a,b)]->a->b
。这听起来像是一个常见的操作,所以要看看它是否已经存在。哦,差不多了,它叫:
lookup key assocs
在关联列表中查找密钥
我们需要做的是翻转前两个参数(使用flip
)并从结果中去掉Maybe
(用fromJust
组合)。结果:
哦,我不认为这是查找问题,哈哈。那么任意长度的元组呢,其中第一个(n-1)元素是映射到最后一个元素的参数,如g::Int->Int->Char@chibro2:将表格更改为
[(arg1,arg2,…),value)]
格式。然后,您仍然可以使用查找
。此外,最好使用fromMaybe(错误“msg”)
和一条好消息,而不是使用just中的。这样,如果您最终调用未定义的函数,则更容易找到错误。
lookup :: Eq a => a -> [(a, b)] -> Maybe b
g :: Int -> Char
g = fromJust . flip lookup [(1,'a'),(2,'b'),(3,'c')]