26 lines
795 B
Plaintext
26 lines
795 B
Plaintext
;;;; (- x) negates: an integer wraps, a float flips its sign — the negation of
|
|
;;;; 0.0 is -0.0, which 1/x tells apart — and a dyn does either by its tag.
|
|
(defn negi [x i32] i32 (- x))
|
|
(defn negf [x f64] f64 (- x))
|
|
(defn negf32 [x f32] f32 (- x))
|
|
(defn negu [x u8] u8 (- x))
|
|
(defn negd [x dyn] dyn (- x))
|
|
(defn negg [x $t] $t {:where (numeric? $t)} (- x))
|
|
(defn main [] i32
|
|
(println (negi 3))
|
|
(println (negi -7))
|
|
(println (negf 2.5))
|
|
(println (/ 1.0 (negf 0.0)))
|
|
(println (negf32 (f32 1.5)))
|
|
(println (negu (u8 1)))
|
|
(println (negd 4))
|
|
(println (negd 2.5))
|
|
(println (/ 1.0 (negd 0.0)))
|
|
(println (negg (i64 9000000000)))
|
|
(println (negg 0.5))
|
|
(let [a (- 5) b (i64 (- 3))]
|
|
(println (+ a (i32 b))))
|
|
(println (- f64-inf))
|
|
(println (< (- f64-inf) (- f64-max)))
|
|
0)
|