anchor.diff:  (defun my-put (sym1 sym2 item)
     (labels ((lookup (sym lst)
   	     (cond ((null lst) nil)
  -		   ((eq sym (get-sym (car lst)))
  +		   ((equal sym (get-sym (car lst)))
   		    (get-val (car lst)))
   		   (t (lookup sym (cdr lst)))))
   	   (put (lst)
  
positive.code: 
  (defun apply-generic (op &rest args)
    (let ((type-tags (mapcar #'type-tag args)))
      (let ((proc (my-get op type-tags)))
        (format t "~A~%" proc)
        (if proc
  	  (apply proc (contents args))
  	  (error "not these types -- apply-generic")))))
  
  (defun real-part (z)
    (apply-generic 'real-part z))
  (defun imag-part (z) (apply-generic 'imag-part z))
  (defun magnitude (z) (apply-generic 'nagnitude z))
  (defun angle (z) (apply-generic 'angle z))
  (defun make-from-real-imag (x y)
    (funcall (my-get 'make-from-real-imag 'rectangular) x y))
  (defun make-from-mag-ang (r a)
    (funcall (my-get 'make-from-mag-ang 'polar) r a))
  
  (let ((z1 (make-from-real-imag 2 3))
        (z2 (make-from-mag-ang 5 (tan (/ 3 4)))))
    (labels ((show (n)
  	     (format t "~%~A~%" n)))
      (show (add-complex z1 z2))
      (show (mul-complex z1 z2))))
  
negative.code: 
  ;;;;基于类型的分派
  (defun attach-tag (type-tag contents)
    (cons type-tag contents))
  (defun type-tag (datum)
    (if (consp datum)
        (car datum)
  