unchecked-dec

added
1.0

ns
clojure.core

type
function

(unchecked-dec x)

Returns a number one less than x, a long.
Note - uses a primitive operator subject to overflow.

                user=> (unchecked-dec 4)
3

user=> (unchecked-dec Integer/MIN_VALUE)
2147483647


            
                ;; Illustrates the difference between (dec), (dec') and (unchecked-dec)

;; The "N" suffix denotes a BigInt instance
;; https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/BigInt.java

Long/MIN_VALUE
;;=> -9223372036854775808

(dec Long/MIN_VALUE)
;;=> ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1501)

(dec' Long/MIN_VALUE)
;;=> -9223372036854775809N 

;; Notice how the resulting number becomes POSITIVE:
(unchecked-dec Long/MIN_VALUE)
;;=> 9223372036854775807