繁体   English   中英

使用haskell从元组列表中提取元组

[英]extracting a tuple out of a list of tuples using haskell

我有这个派生的数据类型AcInfo,它由以下用户创建的数据类型[(AcNo, Name, City, Amnt)] (所有都是字符串,除了作为Int的Amnt之外),我想要从中获取元组通过检查AcNo列出。

我发表了声明,并作了进一步介绍,但我发现很难弄清楚下一步该怎么做。 声明:

accountDetails :: AcInfo -> AcNo -> [Name, City, Amnt]
accountDetails dbase number 

使用列表理解会有用吗? 此外,什么是寻求解决方案的好方法?

提前致谢。

您可以使用列表推导很容易地做到这一点:

locateAcct :: AcNo -> [(AcNo, Name, City, Amnt)] -> (AcNo, Name, City, Amnt)
locateAcct account db = head [ tup | tup@(ac, _, _, _) <- db, ac == account ]

当然,通过使用head ,我们对失败的可能性敞开心open。 也许更好的方法是使用类似于安全库的headMay版本的东西,如果列表为空,则返回Nothing:

locateAcct :: AcNo -> [(AcNo, Name, City, Amnt)] -> Maybe (AcNo, Name, City, Amnt)
locateAcct account db = headMay [ tup | tup@(ac, _, _, _) <- db, ac == account ]

现在,如果该帐户不存在,您将一无所获,而不是模式匹配失败。

find ((==) target . fst4) http://zvon.org/other/haskell/Outputlist/find_f.html

其中fst4是的一个版本fst ,需要一个四元组。 不知道它是否在库中,但是很容易编写。

暂无
暂无

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

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