2013-04-12 56 views
1

我想交換就像(1,3,[2,4],5,[7,12,[14]])交換嵌套表在Haskell

我知道,在Haskell類型列表應該是一樣的,所以我困惑我怎麼能做到這一點的列表。

我應該使用另一個數據結構嗎? 或我應該定義另一種數據類型?

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

+0

您能否爲您的示例發佈期望的輸出?我不確定我是否正確理解問題。 – Adrian

回答

2

事實上,這樣的列表是不可能的,它確實是一個你正在看的樹,例如類似的東西。

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

現在你必須想想你真正的意思是swap。你可以交換頂級列表,你可以交換樹葉和...

1

在你的情況它不是一個列表,但實際上是一個元組。元組是不同的容器,所以這就是爲什麼不同類型可能在裏面。然而,交換元組中的元素不可能以通用的方式編寫,至少在標準的Haskell中是這樣。我建議對Bryan指出的數據進行操作。

+0

實際上,在元組內部有一個'[7,12,[14]]',除非在範圍內有一些瘋狂的'Num'或'IsList'實例,否則這是不可能的。 –