2009-03-20 4 views
7

내가 OCaml의 코어 언어 수레의 절대 값 기능을 필요로 나는 하나를 소유하지 않는 것, 그래서 나는 다음과 같은 썼다 보인다절대 값 OCaml의

let absF (f:float) = if f > 0.0 then f else (f *. -1.0);; 

을 인용 양성을 위해 아니라 네거티브 작동합니다 :

이 표현은 float 형이 -> 플로트 그러나 여기에서 int 형

내 논리의 오류가 무엇에 사용됩니까? 당신이

absF -1.0;; 

를 입력하면

답변

10

은 OCaml로는 빼기로

(absF) - (1.0);; 

즉로 해석합니다. 대신

absF (-1.0);; 
13

핵심 언어에는 abs_float이 있습니다.

또한 ~-.을 사용하여 단항 부정을 나타낼 수 있으며, 이는 정수뿐만 아니라 ~- 연산자에도 적용됩니다. 이 같은 (이미 존재하더라도) 등의 연산자를 정의 할 수 있습니다 : 당신이 경우 부동에게있는 경우

let (~-) a : int = 0 - a 
let (~-.) a : float = 0.0 -. a 
2

int 값이 다른

# abs(-1) 
- : int = 1 

을 사용할 수 있습니다

# abs_float(-1.0) 
- : float = 1.