在haskell中交换嵌套列表

时间:2013-04-12 07:02:03

标签: haskell nested-lists hotswap

我想交换像(1,3,[2,4],5,[7,12,[14]])

这样的列表

我知道列表的haskell类型应该是相同的,所以我很困惑,我怎么能这样做。

我应该使用其他数据结构吗? 或者我应该定义另一种数据类型?

例如交换2 3(1,3,[2,4],5,[7,12,[14]])==> (1,3,5,[2,4],[7,12,[14]])

2 个答案:

答案 0 :(得分:2)

确实这样的列表是不可能的,它确实是你正在看的树,例如像这样的东西。

data NestedList a = Leaf a | Node [NestedList a]

现在你必须考虑swap的真正含义。你可以交换顶级列表,你可以交换叶子......

答案 1 :(得分:1)

在你的情况下,它不是一个列表,但实际上是一个元组。元组是异类容器,因此这就是为什么不同类型可能在其中。但是,在元组中交换元素是不可能以通用方式编写的,至少在标准Haskell中是这样。我建议对布莱恩指出的数据进行操作。