anchor.diff:  ;;;; file.
   
   (in-package #:cl-foo)
  +
  +(defun glsl-element (element)
  +  (cond
  +    ((listp element) (make-glsl-operation (elt element 0) (rest element)))
  +    ((stringp element) (format nil "~S" element))
  +    (t element)))
   
   (defun make-glsl-binary-operation (symbol first-elt rest-elt)
     (ecase symbol
  
positive.code:     ((:-) (format nil "-(~A)" first-elt))))
  
  (defun make-glsl-operation (symbol l)
    (let ((first-elt (first l))
          (rest-elt (rest l)))
      (ecase symbol
        ((:+ :* :/ :> :< :>= :<= :and :or) (make-glsl-binary-operation symbol first-elt rest-elt))
        ((:not) (make-glsl-unary-operation symbol first-elt))
        ((:-) (if (eq (length rest-elt) 0)
                 (make-glsl-unary-operation symbol first-elt)
                 (make-glsl-binary-operation symbol first-elt rest-elt))))))
  
  
negative.code:          (gl:delete-program ,program)))))
  
  (defun make-glsl-shader (l)
    (format nil "~{~A~}" (mapcar #'make-glsl-line l)))
  