2013-01-30 3 views
0

카드의 값을 반환하는 다음과 같은 기능이 있습니다. 나는 경우 민 => 민 다음과 같은 오류주고있다 이유는 확실하지 않다 : rank-> INT-> 순위 SML 케이스 및 패턴 일치

Error: Types of rules don't agree, Earlier rules rank->int this rule 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 
+6

코 세라 숙제로 i을 반환해야? ;-) –

답변

8

오류 메시지는 나타냅니다. 모든 패턴에 대해 동일한 반환 유형이 있어야합니다.

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

그래서 당신은 올바른 생성자 Num i (뿐만 아니라 Num)를 지정하고 int