diff --git a/src/lib/reader.rls b/src/lib/reader.rls index 1019aa5..69896fc 100644 --- a/src/lib/reader.rls +++ b/src/lib/reader.rls @@ -208,7 +208,7 @@ [(decimal-char? (char n)) (decimal n neg 0)])) (define (leading-zero n neg) (cond - [(end? n) 0] + [(end? n) (return 0)] [(eq? (char n) #\.) (fpnum (next n) neg 0.0)] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg 0.0)] [(memq (char n) '(#\X #\x)) (radix (next n) neg 16 0)] @@ -216,13 +216,13 @@ [(octal-char? (char n)) (radix n neg 8 0)])) (define (radix n neg rad accum) (cond - [(end? n) (if neg (fix-neg accum) accum)] + [(end? n) (return (if neg (fix-neg accum) accum))] [(hex-char? (char n)) (let ([int (digit->integer (char n))]) (when (fix>= int rad) (fail)) (radix (next n) neg rad (fix+ (fix* accum rad) int)))])) (define (decimal n neg accum) (cond - [(end? n) (if neg (fix-neg accum) accum)] + [(end? n) (return (if neg (fix-neg accum) accum))] [(eq? (char n) #\.) (fpnum (next n) neg (make-float accum))] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg (make-float accum))] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) @@ -237,7 +237,7 @@ (float/ 0.1 10.0)))])) (define (fpnum n neg accum [pv 0.1]) (cond - [(end? n) (if neg (float-neg accum) accum)] + [(end? n) (return (if neg (float-neg accum) accum))] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg accum)] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) (fpnum (next n) neg @@ -257,9 +257,8 @@ (fpnum-exp-digit* (next n) accum neg int))])) (define (fpnum-exp-digit* n accum neg expon) (cond - [(end? n) ((if neg float/ float*) - accum - (pow 10.0 (make-float expon)))] + [(end? n) (return ((if neg float/ float*) + accum (pow 10.0 (make-float expon))))] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) (fpnum-exp-digit* (next n) accum neg (fix+ (fix* expon 10) int)))]))