#lang racket
(require htdp/testing)
(require (lib "trace.ss"))

(define (myapp L M)
  (if (null? L)
      M
      (cons (first L) (myapp (rest L) M))))

(trace myapp)

(myapp '(1 2 3) '(a b c))

(define (everyother L)
  (if (null? L)
      '()
      (if (null? (rest L))
          L
          (cons (first L) (everyother (rest (rest L)))))))

(everyother (range 1 10))
(everyother '())
(everyother '(1))
; return elements in L but not in M
; L and M contain numbers in increasing order
(define (difference L M)
  (cond 
    [(null? L) L]
    [(null? M) L]
    [(= (first L) (first M)) (difference (rest L) (rest M))]
    [(< (first L) (first M)) (cons (first L) 
                                   (difference (rest L) M))]
    [else (difference L (rest M))]))
  
(check-expect (difference '(1 2 4 6) '(3 4 5 6 7)) '(1 2))



