Haskell:从元组类型中检索第n个值
我试图从导入的包中访问类型内部的一些数据 类型(由包作者)声明如下: 我试图用如下函数提取类型中的第一个列表:Haskell:从元组类型中检索第n个值,haskell,Haskell,我试图从导入的包中访问类型内部的一些数据 类型(由包作者)声明如下: 我试图用如下函数提取类型中的第一个列表: getDates :: MultiBalanceReport -> [DateSpan] getDates (date,_,_) = date 但当我使用该函数时,编译器会抱怨类型不同: • Couldn't match expected type ‘MultiBalanceReport’ with actual type ‘([DateSpan],
getDates :: MultiBalanceReport -> [DateSpan]
getDates (date,_,_) = date
但当我使用该函数时,编译器会抱怨类型不同:
• Couldn't match expected type ‘MultiBalanceReport’
with actual type ‘([DateSpan], t7, t8)’
我觉得编译器只是不知道MultiBalanceReport
类型的内部细节?我没有导入正确定义类型的包吗
我是Haskell的新手,如果我使用了错误的术语来描述我的问题,那么很抱歉。您需要在模式匹配中包含新类型
getDates :: MultiBalanceReport -> [DateSpan]
getDates (MultiBalanceReport (date,_,_)) = date
你真的很接近。您在元组类型上进行模式匹配,但实际值是一个包含元组的
MultiBalanceReport
newtype
是一种带有构造函数的数据类型,因此需要首先从构造函数MultiBalanceReport
中展开元组:
getDates :: MultiBalanceReport -> [DateSpan]
getDates (MultiBalanceReport (date,_,_)) = date
getDates::MultiBalancerPort->[DateSpan]
GETEDISTS(多BalAccReRePoT(日期,γ,))=日期<代码>,我会认为这是一个反模式。只需使用data MBR=MBR[DateSpan][MultiBalanceReportRow]MultiBalanceReportTotals
并避免元组,只使用MBR
构造函数。
getDates :: MultiBalanceReport -> [DateSpan]
getDates (MultiBalanceReport (date,_,_)) = date
getDates :: MultiBalanceReport -> [DateSpan]
getDates (MultiBalanceReport (date,_,_)) = date