2012-08-23 63 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(我知道你不因爲這是一個學習練習,所以想要使用它,但請記住它是可用的)。