模式匹配自定义数据类型
Pattern matching custom datatypes
假设我有一个 datatype
和 type
,如下所示:
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)
假设我有一个 datatype
和 type
,如下所示:
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)