#lang racket (define (sum lst) ;define sum function (define (helper lst sum) ;setup tail recursive helper (cond ;conditions for recursion [(empty? lst) 0] ;base case [else (if ;case for if the list item is a number (number? (first lst)) ;if the item is a number (helper ((rest lst) (+ sum (first lst)))) ;call the helper function with the rest of the list and add to sum (helper (rest lst) sum)) ;error case if it is not a number ])) (helper lst 0)) ;first recursive call ;my attempet to use match, was not going well ;(match lst ; [`() 0] ; [(number? head tail ...) (+ sum head) (module+ test (require rackunit) (check-equal? (sum `()) 0) (check-equal? (sum `(1 2)) 3) (check-equal? (sum `(1 2 "buckle my shoe")) 3) (check-equal? (sum `(-1 -2)) -3) ;test for negative numbers (check-equal? (sum `(-1 `(1 2) -2))) ;test for recursive lists (check-equal? (sum `(0.1 0.2)) 0.3) ;test for floating point numbers )