2015-10-24 102 views
0

我第一次在SML中玩弄數據類型。我已經定義了一個名爲西裝的數據類型的四種花色的撲克牌SML中的自定義數據類型

datatype suit = Spades | Clubs | Hearts | Diamonds; 

現在我想要寫一個函數,西裝,然後返回它的字符串表示。這是目前

fun suitname(x) = 
if x = Spades then 
    "Spades" 
else if x = Clubs then 
    "Clubs" 
else if x = Diamonds then 
    "Diamonds" 
else if x = Hearts then 
    "Hearts" 
else 
    "Undefined suit"; 

它編譯罰款,但是當我嘗試每種花色

suitname Hearts; 
suitname Spades; 
suitname Clubs; 
suitname Diamonds; 

調用它,我得到這個錯誤

enter image description here

,而且不知道爲什麼。任何幫助將不勝感激!

+0

您可以將if-else鏈縮短爲'x的黑桃=>「黑桃」|俱樂部=>「俱樂部」|鑽石=>「鑽石」|心=>「心」 –

+0

很酷,謝謝! –

回答

0

此錯誤消息看起來像您定義數據類型suit兩次(也許交互?),並且該函數的定義使用較舊的定義,並且呼叫站點是較新的。嘗試重新輸入函數定義。

+0

我看到發生了什麼,我定義了函數後定義了數據類型。顯然定義順序在這個語言中很重要。這個答案讓我意識到,所以我會接受它。謝謝 –