Project Euler 2 in Scheme
;; helpers
(define (sum l)
(if (null? l)
0
(+ (car l) (sum (cdr l)))))
;; e2
(define (fib x)
(define (fib-inner n)
(if (<= n 2) 1
(+ (fib-inner (- n 1)) (fib-inner (- n 2)))))
(define (fib-list num)
(let ((i (fib-inner num)))
(if (> i x)
'()
(cons i (fib-list (+ num 1))))))
(sum (filter even? (fib-list 1))))