list difference


Define list difference. This may or may not be the problem given, but it's not worth the time to figure it out (Interview problem? Oh, please...)

 $  cat ld.scm 
 #lang racket 
  
 (require test-engine/racket-tests) 
  
 (define (list-diff l1 l2)   
   (let ((l2-elements (make-hash))) 
     (for-each (lambda (e) (hash-set! l2-elements e #t)) l2) 
     (filter (lambda (e) (not (hash-has-key? l2-elements e))) l1))) 
    
 (check-expect (list-diff '(1 2 3) '(1 2 3)) '()) 
 (check-expect (list-diff '(1 2 3) '(1 2)) '(3)) 
 (check-expect (list-diff '(1 2 3) '(1)) '(2 3)) 
 (check-expect (list-diff '(1 2 3) '()) '(1 2 3)) 
 (check-expect (list-diff (string->list "mississippi") (string->list "river")) (string->list "msssspp")) 
 (check-expect (list-diff (string->list "mississippi") (string->list "spin")) (string->list "m")) 
 (test) 
  
 $ mzscheme ld.scm  
 All 6 tests passed! 
  
 $