anchor.diff:  	      (loop for i below (- (length coords) 1) by 2
   		 collect (list (elt coords i) (elt coords (+ 1 i)) 0))))
   
  -(defun evaluate (candidate target)
  -  (let ((index 0)
  -	(score 0))
  -    (zpb-ttf:do-contours (contour target)
  -      (zpb-ttf:do-contour-segments (start ctrl end) contour
  -	(incf score (coords-distance start ctrl end (aref candidate index)))
  -	(incf index)
  -	(when (= index (length candidate))
  -	  (return))))
  -
  -    (when (not (= score 0))
  -      (setf score (/ score index)))
  -
  -    score))
  -
   (defun coords-distance (start ctrl end candidate)
     (let ((score 0))
       (unless ctrl 
  
positive.code:     (setf *scores*
  	  (loop for chromosome in *population*
  	       collect (evaluate (chromosome->coordinates chromosome) (glyph app))))
      ;; selection
      (setf (candidate app)
  	  (loop for coords across (chromosome->coordinates (first *population*))
  	     collect (coords->curve coords)))
      ;; crossover
      ;; mutation
      (run app)
  ))
  
  (defun initialize-population (population-size chromosome-length)
    (loop repeat population-size
       collect (make-chromosome chromosome-length)))
  
  (defun make-chromosome (chromosome-length &optional (range 1000) (straight-prob 0.1))
    "Chromosome length is the number of contours for a character. Each contour consists of three pairs of control point coordinates. Every contour is a straight line with probability straight-prob. A straight line is denoted by a zero second control point."
    ;;todo no magick numbers
  
negative.code: 
      score))
  
  (defun distance-squared (p1-x p1-y p2-x p2-y)
    (+ (expt (- p1-x p2-x) 2)
       (expt (- p1-y p2-y) 2)))
  
  (defun get-relative-scores (scores)
    (let* ((fitness-total (reduce '+ scores))
  	(relative-fitness (mapcar (lambda (x) (/ x fitness-total)) scores)))
      relative-fitness))
  
  