2012-10-02 8 views
0

변수를 입력하고 실제 또는 정수인지 확인하고 해당 작업에 대해 두 가지 다른 작업을 수행하길 원합니다. 정수가 아닌 경우 거짓이라고 말하고 그렇지 않으면 거짓입니다.입력이 정수인지 여부를 확인하십시오.

재미 realorinteger (n) = n 인 경우 int이면 true이고 그렇지 않으면 false입니다.

하지만 확실히 작동하지 않습니다. int에서 n을 시도해 보았습니다.

어떤 도움이 필요합니까?

답변

2

이 작업을 수행 할 수 없습니다.

유형 시스템은 단순히 기능이 여러 유형을 취할 수 없으며 유형에 따라 작동합니다. 함수에 int이 있거나 real이 필요합니다. (또는 두 가지 모두 걸리지 만 string s, list s 등등 ... 다형성입니다.

정수 또는 실수와 같은 값을 캡슐화하는 데이터 유형을 만들어 가짜로 만들 수 있습니다. 그래서 :

fun realorinteger (IVal i) = ... (* integer case here *) 
    | realorinteger (RVal r) = ... (* real case here *) 

이 함수는 다음 x가 맞의 타입 타입 intorreal -> x을 갖

datatype intorreal = IVal of int | RVal of real 

그러면 원하는 번호를 추출하는 등의 값에 일치하는 패턴을 사용하여 t-hand-side 표현. 결과 값은 두 경우 모두 동일한 유형이어야합니다.

fun round (IVal i) = i 
    | round (RVal r) = Real.round r 

다음과 같이 호출 :

val roundedInt = round (IVal 6); 
val roundedReal = round (RVal 87.2); 

그러한 함수의 예는 라운딩 함수일 수도

관련 문제