(define between (lambda (low high) (if (> low high) null (cons low (between (+ low 1) high))))) The major steps in evaluating (between 19 21): (Think about how you'd derive these from the above code; just looking and nodding and thinking 'yeah that looks reasonable' won't help you learn!) (between 19 21) = (cons 19 (between 20 21)) = (cons 19 (cons 20 (between 21 21))) = (cons 19 (cons 20 (cons 21 (between 22 21)))) = (cons 19 (cons 20 (cons 21 null))) which can also be written as: = (list 19 20 21)