(defvar *fibonacci-list*) (defvar *solution*) (defun next-fibonacci-number () (let ((next-fibonacci (+ (elt *fibonacci-list* 0) (elt *fibonacci-list* 1)))) (setf *fibonacci-list* (list (elt *fibonacci-list* 1) next-fibonacci)) next-fibonacci)) (defun problem-2 (max-number) (setf *fibonacci-list* (list 0 1)) (setf *solution* 0) (loop (let ((next-fibonacci (next-fibonacci-number))) (format t "Fibonacci: ~a~%" next-fibonacci) (when (= (mod next-fibonacci 2) 0) (if (> next-fibonacci max-number) (return) (setf *solution* (+ *solution* next-fibonacci)))))) (format t "Solution: ~a~%" *solution*))