繁体   English   中英

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

[英]Haskell: Best way to turn a list of tuples into a haskell function?

我有一个三元组的字符串列表,像这样:

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 ]

谢谢,安德烈

通常,这是通过地图完成的(请参见Data.Map ,该链接还说明了其工作方式以及如何构建自己的地图)。

您可能需要使用([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)]

ghci> incStr "a1"
"a2"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM