Haskell - 将列表解压缩为自定义数据类型

时间:2016-06-16 00:56:50

标签: haskell types

是否可以将列表解压缩为数据类型,而无需特定的模式匹配?

例如

data MyType = MyType Int Int Int deriving Show
let l = [1, 2, 3]

func :: [Int] -> MyType

用法是

λ: func l
λ: Mytype 1 2 3 

我想要实现的目标。*

我有一个列表,我从CSV文件中提取。每个列表都是类型变量列表。我希望有一种快速的方法可以将这些类型变量传递给类型,而不必模式匹配十个或更多变量。

1 个答案:

答案 0 :(得分:2)

我个人认为你应该使用模式匹配....

但是,您可以使用此答案中的信息将列表转换为元组....

How do I convert a list to a tuple in Haskell?

然后,您可以使用此答案中的信息将该元组转换为构造函数的参数

Uncurry for n-ary functions

它有效,并且在某种程度上是理智的,但要避免一行模式匹配需要做很多工作。