模式匹配自定义数据类型

时间:2015-01-13 21:07:57

标签: types sml

我们假设我有一个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 个答案:

答案 0 :(得分:1)

在SML中,参数为eqtypes的数据类型声明是eqtypes。所以你可以改用

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