Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 22nd, 2012  |  syntax: None  |  size: 0.78 KB  |  hits: 5  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. (define (make-object name) (list 'name name))
  2. (define object->name cadr)
  3.  
  4. (define names (list "john" "paul" "george" "ringo"))
  5. (define objects (map make-object names))
  6.  
  7. (define (contains? objects names)
  8.   (define (names-contains? name)
  9.     (let loop ((names names))
  10.       (cond
  11.        ((null? names) #f)
  12.        ((string=? name (car names)) #t)
  13.        (else (loop (cdr names))))))
  14.   (let loop ((object-names (map object->name objects)))
  15.     (cond
  16.      ((null? object-names)
  17.       #t)
  18.      ((not (names-contains? (car object-names)))
  19.       #f)
  20.      (else (loop (cdr object-names))))))
  21.  
  22. (define (p message result)
  23.   (display message)
  24.   (display result)
  25.   (newline))
  26.  
  27. (p "This test passed: " (contains? objects names))
  28. (p "This test passed: " (not (contains? (cons (make-object "duncan") objects) names)))