anchor.diff:  (in-package #:cl-foo)
   
   ;;; Return a shader from the given file.
  -;;; fixme: add code for handling errors
   (defun read-shader (shader-type filename)
     (let ((shader (gl:create-shader shader-type))
           (pathname (merge-pathnames (asdf:system-source-directory :cl-foo) filename)))
       (gl:shader-source shader (alexandria:read-file-into-string pathname))
       (gl:compile-shader shader)
  +    (let ((log (gl:get-shader-info-log shader)))
  +      (if (not (string= "" log))
  +          (error (concatenate 'string "Error in " filename "~%" log))))
       shader))
   
   ;;; Run a shader program with the given shaders.
  -;;; fixme: add code for handling errors
   (defun shader-program (shaders)
     (let ((program (gl:create-program)))
       (mapcar #'(lambda (shader) (gl:attach-shader program shader)) shaders)
  
positive.code:     (mapcar #'(lambda (shader) (gl:detach-shader program shader)) shaders)
      (mapcar #'gl:delete-shader shaders)
      (gl:use-program program)
      (gl:delete-program program)))
  
  (defun main-loop (&key (width 1280) (height 720) (title "cl-foo"))
  
negative.code:              (when (sdl2:scancode= scancode :scancode-escape)
                 (sdl2:push-event :quit))))
  
            (:idle ())
  
            (:quit () t))))))
  