2015-01-13 40 views
0

比方說,我有一個有datatypetype如下:模式匹配的自定義數據類型

datatype symbol = A | B | C | D | E | F 
type card = symbol * symbol * symbol 

而且我想編寫一個函數,將採取一卡,並檢查是否有唯一不同的符號:

fun valid_card(card) 
    case card of 
     ... 

我可以使用模式匹配來檢查給定card中的獨特性嗎?

例如(A, A, B)將無效,但(B, A, C)將是有效的。

回答

1

在SML中,參數爲eqtypes的數據類型聲明爲eqtypes。因此,您可以改爲使用

fun valid(x1, x2, x3) = not(x1 = x2) andalso not(x1 = x3) andalso not(x2 = x3)