我有以下函数,假设返回卡的值。我不知道为什么Num => Num发出以下错误:
错误:规则类型不一致,早期规则排名 - >在此规则中 秩> INT->秩
为什么Num => Num有返回类型rank-> int-> rank
datatype suit = Clubs | Diamonds | Hearts | Spades
datatype rank = Jack | Queen | King | Ace | Num of int
type card = suit * rank
fun card_value (suit, rank)=
case rank of
Ace =>11
| Jack =>10
| King =>10
| Queen =>10
| Num => Num ;
card_value(Clubs,Ace); //calling function
答案 0 :(得分:8)
错误消息是指示性的。您需要为所有模式使用相同的返回类型。
fun card_value (suit, rank) =
case rank of
Ace => 14
| King => 13
| Queen => 12
| Jack => 11
| Num i => i
因此,您必须指定正确的构造函数Num i
(仅限Num
)并将i
作为int