Here is a solution to contains-milk? that we were working on at the end of class today:
;; contains-milk?:  list-of-string -> boolean
;; determines whether the list contains milk
(define (contains-milk? alos)
  (cond [(empty? alos) false]
        [(cons? alos)
                (cond [(string=? "milk" (first alos)) true]
                      [else (contains-milk? (rest alos))])]))
An alternative way to write the function is like this:
;; contains-milk?:  list-of-string -> boolean
;; determines whether the list contains milk
(define (contains-milk? alos)
  (cond [(empty? alos) false]
        [(cons? alos)
                (or (string=? "milk" (first alos))
                    (contains-milk? (rest alos)))]))
And here's the solution to count-short-strings:
;; count-short-strings:  list-of-string -> number
;; counts the number of strings in the list with 5 or fewer characters
(define (count-short-strings alos)
   (cond [(empty? alos) 0]
         [(cons? alos)
                (cond [(<= (string-length (first alos)) 5) (+ 1 (count-short-strings (rest alos)))]
                      [else (count-short-strings (rest alos))])]))