Carp/core/Long.carp

48 lines
1.3 KiB
Plaintext
Raw Normal View History

2018-01-24 18:08:18 +03:00
(system-include "carp_long.h")
2018-01-24 17:53:18 +03:00
2017-10-25 20:17:53 +03:00
(defmodule Long
(register + (λ [Long Long] Long))
(register - (λ [Long Long] Long))
(register * (λ [Long Long] Long))
(register / (λ [Long Long] Long))
(register < (λ [Long Long] Bool))
(register > (λ [Long Long] Bool))
(register = (λ [Long Long] Bool))
(register neg (λ [Long] Long))
2017-10-25 20:17:53 +03:00
(register mod (λ [Long Long] Long))
(register seed (λ [Long] ()))
2017-11-29 16:16:23 +03:00
(register bit-shift-left (λ [Long Long] Long))
(register bit-shift-right (λ [Long Long] Long))
(register bit-and (λ [Long Long] Long))
(register bit-or (λ [Long Long] Long))
(register bit-xor (λ [Long Long] Long))
(register bit-not (λ [Long] Long))
2017-10-25 20:17:53 +03:00
(register inc (λ [Long] Long))
(register dec (λ [Long] Long))
2017-11-29 13:45:20 +03:00
(register to-int (λ [Long] Int))
(register from-int (λ [Int] Long))
2019-06-22 21:18:32 +03:00
(todo copy "Should not be needed when refs to value types are auto-converted
to non-refs.")
(register copy (λ [&Long] Long))
2017-10-25 20:17:53 +03:00
2017-11-16 23:19:39 +03:00
(register safe-add (λ [Long Long (Ref Long)] Bool))
(register safe-sub (λ [Long Long (Ref Long)] Bool))
(register safe-mul (λ [Long Long (Ref Long)] Bool))
2017-11-17 14:26:01 +03:00
(register abs (λ [Long] Long))
2017-11-29 17:28:21 +03:00
(defn even? [a] (= (mod a 2l) 0l))
(defn odd? [a] (not (even? a)))
2018-01-15 18:27:05 +03:00
)
(defmodule LongRef
(defn = [a b]
(Long.= @a @b))
(defn < [a b]
(Long.< @a @b))
2018-01-15 18:27:05 +03:00
(defn > [a b]
(Long.> @a @b))
2017-11-14 20:07:35 +03:00
)