- (labels ((simple (a i r goodp sgn)
- (loop
- (when (>= i end)
- (return (values (and goodp (* a sgn)) i)))
- (let ((d (digit-char-p (char string i) r)))
- (unless d
- (return (values (and goodp (* a sgn)) i)))
- (setf a (+ (* a r) d))
- (setf goodp t)
- (incf i))))
+ (labels ((simple (i r goodp sgn)
+ (multiple-value-bind
+ (a i)
+ (if (and (< i end)
+ (digit-char-p (char string i) r))
+ (parse-integer string
+ :start i :end end
+ :radix r
+ :junk-allowed t)
+ (values nil i))
+ (values (if a (* sgn a) (and goodp 0)) i)))