anchor.diff:        (quote tree))))
   
   (defun replace-subtree (tree nth-list replacement)
  -  (if nth-list
  +  (if (and (is-tree (cdr tree)) nth-list replacement)
       (macrolet
         ((macro-nth (atree list-nth)
                     `(eval (list 'lambda '(tree replacement)
                                  (list 'setf (recursive-nth ,atree ,list-nth) 'replacement)))))
  -      (let ((setf-return (funcall (macro-nth tree nth-list) tree replacement)))
  +      (let ((setf-return (funcall (macro-nth tree (reverse nth-list)) tree replacement)))
           tree))
       tree))
   
   (defun crossover (mother father)
     (let* ((father-st (pick-random-subtree father))
  -         (mother-st-acc (pick-random-subtree mother father))
  +         (mother-st-acc (pick-random-subtree mother father-st))
            (mother-st (replace-subtree mother mother-st-acc father-st)))
       mother-st))
   
  
positive.code:     nil))
  
  (defun evaluate-population (population repeat-var args fargs)
    (mapcar #'(lambda (tree) (cons tree (evaluate-tree tree repeat-var args fargs))) population))
  
  (defun generation-fitness (population args fargs fitness-function &optional (repeat-var 50))
    (pairlis population
             (mapcar #'(lambda (result) (fitness-function result))
                     (evaluate-population population repeat-var args fargs))))
  
  (defun get-min-max (alist predicate key)
  
negative.code:                                 conditional-list
                                  (- max-tree-depth 1))))))))
  
  (defun generate-population (primitives actions conditionals max-tree-depth member-count)
    (loop for args upto (- member-count 1)
          collect (generate-program-tree primitives actions conditionals max-tree-depth)))
  
  