Haskell:从元组类型中检索第n个值

标签 haskell

我正在尝试从导入的包访问类型内的一些数据。

该类型(由包作者)声明如下:

newtype MultiBalanceReport =
  MultiBalanceReport ([DateSpan]
                     ,[MultiBalanceReportRow]
                     ,MultiBalanceReportTotals
                     )

我正在尝试使用如下函数提取类型中的第一个列表:

getDates :: MultiBalanceReport -> [DateSpan]
getDates (date,_,_) = date

但是当我使用该函数时,编译器提示类型不同:

• Couldn't match expected type ‘MultiBalanceReport’
              with actual type ‘([DateSpan], t7, t8)’

我觉得编译器只是不知道 MultiBalanceReport 类型的内部细节?我是否没有导入正确定义类型的包?

我是 Haskell 的新手,如果我使用错误的术语来描述我的问题,我很抱歉。

最佳答案

newtype 是一种带有构造函数的数据类型,因此您需要从构造函数中展开元组MultiBalanceReport 首先:

getDates :: MultiBalanceReport -> [DateSpan]
getDates <b>(MultiBalanceReport</b> (date,_,_)<b>)</b> = date

关于Haskell:从元组类型中检索第n个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732502/

相关文章:

haskell - 不可判定的函数依赖

haskell - 类型类 MonadPlus、Alternative 和 Monoid 之间的区别?

haskell - 隐式参数和函数

haskell - haskell 中需要 4 个参数的贝塞尔函数

Haskell:模式匹配类型注释中需要ScopedTypeVariables

haskell - 在 Haskell 中实例化列表的最短方法是什么?

haskell - 函数式编程语言中的 Church-Rosser 定理示例

haskell - 字符串和 [a] 实例

parsing - 如何使用 Parsec 通过特定字符串分隔字符串

Haskell 优化 : how to stop list from performing allocations?