2012-08-23 65 views
1

试图在this page解决练习7我想定义的数据类型来写像一些值:如何定义一个嵌套列表

(List [Elem 1, List [Elem 2, List [Elem 3, Elem 4], Elem 5]]) 

嵌套列表,任意长度,任何深度。

我试着用这个代码:

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

,但它不会编译:

Parse error: naked expression at top level 

如何能不能做到?

+0

请发布一个完整的代码示例,生成您收到的错误消息。只是'数据列表a = Elem a |列表[列表a]'不会*产生该错误消息(或者任何其他错误消息)。 – sepp2k

+0

@ sepp2k是的,它甚至可以让我做'let b = List [Elem 1,List [Elem 2,List [Elem 3,Elem 4],Elem 5]] :: List Integer' in ghci。 –

回答

7

而是包含这个文件:

data List a = Elem a | List [List a] 
(List [Elem 1, List [Elem 2, List [Elem 3, Elem 4], Elem 5]]) 

尝试包含这个文件:

data List a = Elem a | List [List a] 
sampleListValue = List [Elem 1, List [Elem 2, List [Elem 3, Elem 4], Elem 5]] 

顺便说一句,一个非常相似的类型也可in the standard libraries(我知道你不因为这是一个学习练习,所以想要使用它,但请记住它是可用的)。