1

カードの値を返すと思われる次の関数があります。ケース Num => Num で次のエラーが発生する理由がわかりません。

エラー: ルールのタイプが一致しません。以前のルールはランク -> int このルールはランク -> 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
4

1 に答える 1

10

エラー メッセージは目安です。すべてのパターンで同じ戻り値の型が必要です。

fun card_value (suit, rank) =
  case rank of
      Ace => 14
    | King => 13
    | Queen => 12
    | Jack => 11
    | Num i => i

Num iそのため、 (だけでなく)正しいコンストラクターを指定し、としてNum返す必要があります。iint

于 2013-01-30T12:29:12.963 に答える