Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何从元组列表中构建函数?_Haskell - Fatal编程技术网

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')]