2015-01-13 2 views
0

Допустим, у меня есть есть 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) будет действительным.

ответ

1

В SML объявления данных, аргументы которых являются eqtypes, являются eqtypes. Таким образом, вы можете просто использовать

fun valid(x1, x2, x3) = not(x1 = x2) andalso not(x1 = x3) andalso not(x2 = x3) 
Смежные вопросы