List Haskell:将元组列表转换为Haskell函数的最佳方法?

List Haskell:将元组列表转换为Haskell函数的最佳方法?,list,function,haskell,List,Function,Haskell,我有一个字符串的三元组列表,如下所示: mylist = [("a1","a2","a3"), ("b1","b2","b3"), ("c1","c2","c3")] 实际字符串是任意的,只是列表表示将前两个字符串映射到第三个字符串的二进制函数。什么是实现函数的计算快速方法 f :: String -> String -> String 所以 f "a1" "a2" == "a3" f "b1" "b2" == "b3" f "c1" "c2" == "c3" 还有,有没有一种

我有一个字符串的三元组列表,如下所示:

mylist = [("a1","a2","a3"), ("b1","b2","b3"), ("c1","c2","c3")]
实际字符串是任意的,只是列表表示将前两个字符串映射到第三个字符串的二进制函数。什么是实现函数的计算快速方法

f :: String -> String -> String
所以

f "a1" "a2" == "a3"
f "b1" "b2" == "b3"
f "c1" "c2" == "c3"
还有,有没有一种通用的方法可以通过元组列表来实现这一点

到目前为止,我只想到了

f a b = lookUp (a,b) [ ((x,y),z) | (x,y,z) <- mylist ]
谢谢,
André

这通常是通过地图完成的。请参见,该链接还说明了它的工作原理以及如何构建自己的地图

您可能需要使用[Char]、[Char]作为键,因此您的数据可以这样表示:

[(("a1","a2"),"a3"), (("b1","b2"),"b3"), (("c1","c2"),"c3")]

这通常是通过地图来完成的。请参见,该链接还解释了它的工作原理以及如何构建自己的地图

您可能需要使用[Char]、[Char]作为键,因此您的数据可以这样表示:

[(("a1","a2"),"a3"), (("b1","b2"),"b3"), (("c1","c2"),"c3")]
有点不清楚您希望这个函数做什么。如果它是两个输入到一个输出的任意映射,那么按照peoro的建议使用Data.Map。如果计算有一些系统的意义,那么试着发现它背后的算法

import Data.Char
incStr [c,x] | isNumber x = [c, intToDigit (digitToInt x + 1)]
有点不清楚您希望这个函数做什么。如果它是两个输入到一个输出的任意映射,那么按照peoro的建议使用Data.Map。如果计算有一些系统的意义,那么试着发现它背后的算法

import Data.Char
incStr [c,x] | isNumber x = [c, intToDigit (digitToInt x + 1)]

您尝试实施了哪些解决方案?如果您尝试了一个解决方案,通常可以了解更多。使用字符串元组到字符串的映射有什么错?您尝试过实现哪些解决方案?如果您尝试了一个解决方案,通常可以了解更多。使用字符串元组到字符串的映射有什么错?谢谢peoro。我还不知道这件事。只是学习Haskell。如果你想要一个更快的方法,那么就使用。谢谢peoro。我还不知道这件事。只是学习Haskell。如果你想要一个更快的方法,那么就使用它。