我想交換就像(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]])
我想交換就像(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]])
事實上,這樣的列表是不可能的,它確實是一個你正在看的樹,例如類似的東西。
data NestedList a = Leaf a | Node [NestedList a]
現在你必須想想你真正的意思是swap
。你可以交換頂級列表,你可以交換樹葉和...
在你的情況它不是一個列表,但實際上是一個元組。元組是不同的容器,所以這就是爲什麼不同類型可能在裏面。然而,交換元組中的元素不可能以通用的方式編寫,至少在標準的Haskell中是這樣。我建議對Bryan指出的數據進行操作。
實際上,在元組內部有一個'[7,12,[14]]',除非在範圍內有一些瘋狂的'Num'或'IsList'實例,否則這是不可能的。 –
您能否爲您的示例發佈期望的輸出?我不確定我是否正確理解問題。 – Adrian