Project Euler 13 in Scheme
;; helpers
(define (reduce func lst)
(let loop ((val (car lst))
(lst (cdr lst)))
(if (null? lst) val
(loop (func val (car lst)) (cdr lst)))))
(define (num->list num)
(if (< num 10)
(list num)
(append (num->list (floor (/ num 10)))
(list (- num (* 10 (floor (/ num 10))))))))
;; e13
(take 10 (num->list (reduce + big-num)))