#lang racket ;; get-evens1 : listof(number) -> listof(number) ;; Return a list containing the even values from lis (define (get-evens1 lis) (cond ((null? lis) '()) ((even? (car lis)) (cons (car lis) (get-evens1 (cdr lis)))) (else (get-evens1 (cdr lis))) )) ;; using let to reduce expression repetition... ;; get-evens : listof(number) -> listof(number) ;; Return a list containing the even values from lis (define (get-evens lis) (cond ((null? lis) '()) ;; we need to start a new cond inside the ;; let block (else (let ((n (car lis)) (tail (get-evens (cdr lis)))) ;; body of let (cond ((even? n) (cons n tail)) (else tail)) )) ))