[英]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.