fork download
  1. ; summing a string
  2.  
  3. (define (sum-string str)
  4. (let loop ((cs (string->list str)) (curr 0) (sum 0))
  5. (cond ((null? cs) (+ curr sum))
  6. ((char-numeric? (car cs))
  7. (loop (cdr cs)
  8. (+ (* curr 10)
  9. (char->integer (car cs))
  10. (- (char->integer #\0)))
  11. sum))
  12. ((positive? curr)
  13. (loop (cdr cs) 0 (+ curr sum)))
  14. (else (loop (cdr cs) 0 sum)))))
  15.  
  16. (display (sum-string "123abc45def")) (newline)
  17. (display (sum-string "123abc45")) (newline)
  18. (display (sum-string "abc123def45ghi")) (newline)
  19. (display (sum-string "abcde")) (newline)
Success #stdin #stdout 0.01s 7948KB
stdin
Standard input is empty
stdout
168
168
168
0