2010-12-21 2 views
2

모두, 내가 ML에서 작동하는 방법 예외 이해하기 위해 노력하고있어,하지만 난 이상한 오류가 있고, 내가 잘못이 무엇인지 알아낼 수 없습니다 :예외 처리는

exception Factorial 

fun checked_factorial n = 
    if n < 0 then 
    raise Factorial 
    else n; 

fun factorial_driver() = 
    checked_factorial(~4) 
    handle 
    Factorial => print "Out of range."; 

무엇이 잘못 될 수있다? 모든 도움에 미리 감사드립니다.

답변

6

factorial_driver에 일관된 유형이 있는지 확인해야합니다. 비 예외적 인 경우는 int을 반환하므로 ML은 함수가 unit -> int 인 것으로 추측하지만 예외적 인 경우 (즉, print 표현식)는 이 아니라 unit을 반환합니다.

일반적으로 모든 경우에 동일한 유형의 값을 반환해야합니다.