我想交换一个列表(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]])
我想交换一个列表(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]])
事实上,这样的列表是不可能的,它确实是你正在看的一棵树,例如像这样的东西。
data NestedList a = Leaf a | Node [NestedList a]
现在你必须想想你真正的意思是什么swap
。你可以交换顶级列表,你可以交换叶子和......
在您的情况下,它不是一个列表,而是一个元组。元组是异构容器,这就是为什么它们内部可能存在不同类型的原因。然而,在元组中交换元素是不可能用通用的方式编写的,至少使用标准的 Haskell 是不可能的。我建议对 Bryan 指出的数据进行操作。