【发布时间】:2013-10-14 16:11:15
【问题描述】:
我是 Haskell 的新手,并试图了解它是如何工作的。 我想在 Haskell 中定义一个可以获取元组列表的函数,这些元组可以是对、3 元组、4 元组、5 元组等
functionY [(a,b)]
那么我不能用像[(1,2,3),(2,3,4)]这样的三元组元素来调用它
functionY [(1,2,3),(2,3,4)] // will complain
我将如何解决这个问题? 谢谢
【问题讨论】:
-
我不确定这是否可能——因为元组是高度特定的类型,而且它们也没有自己的类型类。在 GHC 中,Data.Tuple 本身只涉及配对。如果我错了,其他人可能会纠正我。
-
忽略编译器错误,你会怎么写
functionY? -
@Steve314 不需要 Haskell 模板;请参阅HList,它仅将 TH 用于非必要的
MakeLabels模块。 -
@Steve314 概念进展是这样的:
(a, b, c, d)与(a, (b, (c, (d, ()))))大致相同;写cons = (,)和nil = ()我们可以在这种类型中拥有一个值cons a (cons b (cons c (cons d nil)));然后,天哪,这看起来有点像异构列表!
标签: haskell