此类型定义是否处理空列表?

sda*_*das 3 haskell list

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

data NestedList a = Elem a | List [NestedList a]
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它不会处理空列表(即.[]).

但是在他们的示例测试中他们表明了

*Main> flatten (List [])
[]
Run Code Online (Sandbox Code Playgroud)

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

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

qap*_*hla 6

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

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