(defun boba (s)
  (let ((n  (parse-integer s))
        (l  (length s))
        (ds (map 'list #'digit-char-p s)))
    (unless #1=(first ds)
      (setf ds (rest ds) #1# (- #1#)))
    (values (apply '+ n l ds) n l ds)))

(defun yoba (s)
  (multiple-value-bind (r n len ds) (boba s)
    (format t "~&~d + ~d + (~{~d~^ + ~}) = ~d" n len ds r)))

(print (boba "-42"))

(dolist (x '("-123" "99"))
  (yoba x))