我正在参加 Coursera 课程,并且正在尝试做功课。
我们必须编写一个 SML 程序,它获取一张卡片列表(由它们的花色和等级表征),如果它们都具有相同的颜色,则返回 true,否则返回 false。
这是我的代码(我不知道为什么它是错误的,但我在编程中退出了一个菜鸟):
datatype suit = Clubs | Diamonds | Hearts | Spades
datatype rank = Jack | Queen | King | Ace | Num of int
type card = suit * rank
datatype color = Red | Black
datatype move = Discard of card | Draw
fun card_color (c) = case c of
(Hearts,_) => Red
|(Diamonds,_) => Red
|(_,_) => Black
fun all_same_color (cs) = case cs of
[] => false
|x::[] => true
|x::y::[] => if card_color (x) = card_color (y) then true
|x::y::xs => if card_color(x)=card_color(y) then all_same_color(xs)
else false