;;; library required

(cond ((> 3 2) (display 'here)  (newline) 'greater)
      ((< 3 2) (display 'there) (newline) 'less))
(cond ((> 3 3) 'greater)
      ((< 3 3) 'less)
      (else 'equal))
(cond
 (#f 'not-reached)
 ((assq 'c '((a 1) (b 2) (c 3))) => cdr))

;;; syntax errors
;;; (cond ())
;;; (cond (else 'a) (else 'b))
;;; (cond (#t =>))

(define testcond
  (lambda (l)
    (cond
     ((assq 'a l) => (lambda (p) (set-car! p 'd)))
     ((assq 'b l) => (lambda (p) (set-car! p 'e)))
     ((assq 'c l) => (lambda (p) (set-car! p 'f))))))

(define l '((a 1) (b 2) (c 3)))
(testcond l)
(testcond l)
(testcond l)
l
