2013-04-03 59 views
0

我剛剛開始學習SML並遇到問題。我想定義一個數據類型,爲一個不同類的列表。
就拿如何定義異構列表數據類型?

val a = [1,[2,4,3],5,[2,6]] 

我有此數據類型

datatype 'a MulList = List of 'a multiList list 
        | E of 'a; 

,但我得到以下錯誤

/tmp/emacs-region29207RwC:8.34-8.43 Error: unbound type constructor: multiList 

uncaught exception Error 
    raised at: ../compiler/TopLevel/interact/evalloop.sml:66.19-66.27 
      ../compiler/TopLevel/interact/evalloop.sml:44.55 
      ../compiler/TopLevel/interact/evalloop.sml:296.17-296.20 
+1

[你嘗試過什麼(http://mattgemmell.com/2008/12/08/what-have-you-tried/)至今? –

+0

數據類型'a MulList ='多列表列表 | '一個; 我創建了這個,但我認爲它可能有更好的語法。 – sarah

回答

1

你的數據類型聲明有一些錯誤。首先,這是一種很好的做法(像你一樣)將值構造函數的第一個字母大寫,但是最好還是使用全部小寫的類型構造函數。
您遇到的真正錯誤是您在定義值構造函數List時將mullist類型引用爲multiList

隨着那固定的,你可以創建你的多重表:

datatype 'a mullist = List of 'a mullist list 
        | E of 'a 

val a = [E 1, List [E 2, E 4, E 3], E 5, List [E 2, E 6]] 
+0

謝謝你的回答,你是對的。但我錯了,srry。你的意思是這只是爲了mullist的解密?那很好嗎?還有其他好的語法嗎? – sarah

+0

這不一定是製作「多重列表」的唯一方式,但是這完全取決於情況。但是我會說這是針對所提出的問題的合適解決方案。 –

+0

因此,如果我想以這種格式「E 1」交換元素,我應該怎麼做? – sarah

相關問題