我目前正在尝试在OCaml中进行一些麻将手处理,并且从一开始我就遇到了一些让我烦恼的事情.
我会给你一些基于卡片的例子,因为我不想把任何人混淆麻将术语.
就像在OCaml中针对Skeptical的用户定义类型的这一部分一样,我想使用变体类型来描述套装,卡片以及所有内容.
type suit = Club | Diamond | Heart | Spade
type value = Jack | Queen | King | Ace | Num of int
type card = Card of suit * value | Joker
type hand = card list
Run Code Online (Sandbox Code Playgroud)
如果我能编写一个compare可以理解有序变体类型的智能函数,那将是非常好的.
理想情况下我写的是这样的:
type suit = Club < Diamond < Heart < Spade
type value = Num of int < Jack < Queen < King < Ace
type card = Card of …Run Code Online (Sandbox Code Playgroud)