List 使用haskell从元组列表中提取元组
我有一个派生的数据类型AcInfo,它由以下用户创建的数据类型组成List 使用haskell从元组列表中提取元组,list,haskell,functional-programming,tuples,List,Haskell,Functional Programming,Tuples,我有一个派生的数据类型AcInfo,它由以下用户创建的数据类型组成 [(AcNo,Name,City,Amnt)] (除了Amnt是一个Int之外,所有的都是字符串)我想要的是通过检查AcNo从下面的列表中得到一个元组 我做了声明,并且做了进一步的阐述,但我发现很难想出下一步该做什么。宣言: accountDetails :: AcInfo -> AcNo -> [Name, City, Amnt] accountDetails dbase number 使用列表理解是否有用?此
[(AcNo,Name,City,Amnt)]
(除了Amnt是一个Int之外,所有的都是字符串)我想要的是通过检查AcNo从下面的列表中得到一个元组
我做了声明,并且做了进一步的阐述,但我发现很难想出下一步该做什么。宣言:
accountDetails :: AcInfo -> AcNo -> [Name, City, Amnt]
accountDetails dbase number
使用列表理解是否有用?此外,寻求解决方案的好方法是什么
提前谢谢 查找(==)target.fst4)
:
其中,fst4
是采用4元组的fst
版本。不确定它是否在库中,但它很容易编写 查找(==)target.fst4)
:
其中,
fst4
是采用4元组的fst
版本。不确定它是否在库中,但它很容易编写 您可以很容易地通过列表理解来完成此操作:
locateAcct :: AcNo -> [(AcNo, Name, City, Amnt)] -> (AcNo, Name, City, Amnt)
locateAcct account db = head [ tup | tup@(ac, _, _, _) <- db, ac == account ]
现在,如果该帐户不存在,那么除了模式匹配失败之外,您将一无所获。您可以非常轻松地使用列表理解来实现这一点:
locateAcct :: AcNo -> [(AcNo, Name, City, Amnt)] -> (AcNo, Name, City, Amnt)
locateAcct account db = head [ tup | tup@(ac, _, _, _) <- db, ac == account ]
现在,如果该帐户不存在,您将得到一个模式匹配失败的结果。这不应该是
AcNo->[(AcNo,Name,City,Amnt)]->(AcNo,Name,City,Amnt)
来提取一个匹配AcNo
的元组吗?这是我的类型减速类型AcNo=String;类型名称=字符串;类型City=String;类型Amnt=Int;键入AcInfo=[(AcNo,Name,City,Amnt)]当您有一个包含2个以上元素的元组时,您可能应该创建一个自定义数据类型来表示该信息分组<代码>数据AcRecord=AcRecord{acNo,name,city::String,amnt::Int}。如果您还不习惯,请熟悉。这不应该是AcNo->[(AcNo,Name,City,Amnt)]->(AcNo,Name,City,Amnt)
来提取与AcNo
匹配的元组吗?这是我的类型减速类型AcNo=String;类型名称=字符串;类型City=String;类型Amnt=Int;键入AcInfo=[(AcNo,Name,City,Amnt)]当您有一个包含2个以上元素的元组时,您可能应该创建一个自定义数据类型来表示该信息分组<代码>数据AcRecord=AcRecord{acNo,name,city::String,amnt::Int}。如果您还不习惯,请熟悉。headMay
也可以作为Data在标准库中提供。Maybe.listToMaybe
headMay
也可以作为Data.Maybe.listToMaybe
在标准库中提供。