fork(1) download
  1. ; uncouple
  2.  
  3. (define (uncouple eql? xs)
  4. (let loop ((xs xs) (zs (list)))
  5. (cond ((null? xs) (reverse zs))
  6. ((null? zs) (loop (cdr xs) (cons (car xs) zs)))
  7. ((eql? (car xs) (car zs)) (loop (cdr xs) (cdr zs)))
  8. (else (loop (cdr xs) (cons (car xs) zs))))))
  9.  
  10. (display (uncouple eq? '(red blue green green blue red yellow))) (newline)
  11. (display (uncouple eq? '(red red red))) (newline)
  12. (display (uncouple eq? '(red red))) (newline)
  13. (display (uncouple eq? '(red))) (newline)
  14. (display (uncouple eq? '())) (newline)
  15. (display (uncouple eq? '(red red blue blue))) (newline)
  16. (display (uncouple eq? '(red red blue green green))) (newline)
Success #stdin #stdout 0.04s 8236KB
stdin
Standard input is empty
stdout
(yellow)
(red)
()
(red)
()
()
(blue)