我想交换像(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]])
答案 0 :(得分:2)
确实这样的列表是不可能的,它确实是你正在看的树,例如像这样的东西。
data NestedList a = Leaf a | Node [NestedList a]
现在你必须考虑swap
的真正含义。你可以交换顶级列表,你可以交换叶子......
答案 1 :(得分:1)
在你的情况下,它不是一个列表,但实际上是一个元组。元组是异类容器,因此这就是为什么不同类型可能在其中。但是,在元组中交换元素是不可能以通用方式编写的,至少在标准Haskell中是这样。我建议对布莱恩指出的数据进行操作。