好吧,所以我開始爲一個類學習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