模式匹配自定义数据类型

Pattern matching custom datatypes

假设我有一个 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) 有效。

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

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