好吧,所以我开始为一个类学习SML,并且我坚持使用选项结构。 我至今这个例子是什么:试图了解SML选项结构
datatype suit = spades|hearts|clubs|diamonds;
datatype rank = ace|two|three|...|j|q|k|joker;
type card = suit*rank;
我的讲师试图通过说,并非所有的卡一定西装解释如何使用选项结构; jokers没有与他们相关的诉讼。 因此设计一个功能getsuit时拿到牌的花色,我们有以下几点:
datatype 'a option = NONE | SOME of 'a;
fun getsuit ((joker,_):card):suit option = NONE
| getsuit ((_,s):card):suit option = SOME s;
但用emacs,我得到两个错误,一个有句话怎么格局和约束不同意,
pattern: rank * ?.suit
constraint: rank * suit
另一种说法表达式类型和结果类型不同意。
expression: ?.suit option
result type: suit option
这是由讲师提供的代码,以便他们显然是有很大帮助,如果没有它会导致错误。 “?”的含义是什么?为什么会出现?我将如何正确定义这个功能?
谢谢,这很简单,我不知道我怎么没有抓住它之前。我尝试了你的第一个建议,它工作正常!谢谢! – quitquit