3

我正在回答Haskell 的 99 个问题中的第7个问题。但是,我已经到了他们定义类型的地步

data NestedList a = Elem a | List [NestedList a]

据我了解,它不会处理空列表(即。[])。

但是在他们的示例测试中,他们显示

*Main> flatten (List [])
[]

这种类型是否涵盖空列表?如果是这样,为什么?

如果没有,并且是网站的错误,如何编写处理空列表的嵌套列表类型?

4

1 回答 1

6

数据类型NestedList a包含 type 的Elem a元素或 type 的元素List [NestedList a]

其中第一个,你似乎已经明白了。NestedList a但是,第二个将's的列表(正常排序)作为其参数。这可以是任何列表,包括[]. 因此,List []是一个有效的NestedList,就像List[Elem 5], 或List [Elem 5, List [Elem 3, Elem 2] ]

于 2013-08-30T03:55:25.877 回答