anchor.diff:           [_ (let* [(first-char (if (= (string/char-at a 1) "-") 2 1))
                      (mult (new 1))
                      (ten (new 10))]
  -              (for i (#s a) first-char -1
  +              (for i (# a) first-char -1
                   (set! val (+ val (* (new (tonumber (string/char-at a i))) mult)))
                   (set! mult (* mult ten)))
                 (.<! val :sign (= (string/char-at a 1) "-")))])]
  
positive.code:                        (with (first-char (if (= (string/char-at a 3) "-")
                                             (progn (.<! val :sign true) 4)
                                             3))
                           (for i 0 (floor (/ (- (#s a) first-char) (/ part-bits size))) 1
                             (let* [(end-pos (- (#s a) (* i (/ part-bits size))))
                                    (start-upos (- end-pos (- (/ part-bits size) 1)))
                                    (start-pos (if (< start-upos first-char) first-char start-upos))
                                    (p (tonumber (string/sub a start-pos end-pos) base))]
  
negative.code:                        (string/concat (reverse parts)))]))]
      (while (= (string/char-at str 1) "0")
        (set! str (string/sub str 2)))
      (when (= (# str) 0)
        (set! str "0"))
      (.. (if (.> a :sign) "-" "") (string/rep "0" (- digits (# str))) str)))
  
  
  (defun equals? (a b)
  