2

我想交换一个列表(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]])

4

2 回答 2

2

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

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

现在你必须想想你真正的意思是什么swap。你可以交换顶级列表,你可以交换叶子和......

于 2013-04-12T07:23:15.367 回答
1

在您的情况下,它不是一个列表,而是一个元组。元组是异构容器,这就是为什么它们内部可能存在不同类型的原因。然而,在元组中交换元素是不可能用通用的方式编写的,至少使用标准的 Haskell 是不可能的。我建议对 Bryan 指出的数据进行操作。

于 2013-04-12T07:34:15.363 回答