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! $