【发布时间】:2016-04-08 21:03:04
【问题描述】:
我正在尝试在 Haskell 中反转嵌套列表。我知道嵌套列表在 Haskell 中不是一个东西,所以我定义了一个:
data NestedList a = Elem a | SubList [NestedList a]
我还有一个扁平化功能:
flatten :: NestedList a -> [a]
flatten (Elem x) = [x]
flatten (SubList x) = concatMap flatten x
现在我想编写我的反向函数。函数定义为:
myreverse :: NestedList a -> NestedList a
我认为这是有道理的,因为我只是重新排列列表中的元素。
我了解如何编写基本的反向函数,并且我也知道对于 Haskell 的标准列表,反向已经定义。
我的问题是:如何处理列表头也是列表的情况?我知道需要发生的是我反转列表的头部并将其放回尾部的反面。但是如何实现呢?
【问题讨论】:
标签: list haskell nested reverse