anchor.diff:  
   (defun non-pointer-type-p (type)
     (assert (valid-type-p type))
  -  (find type '(void int float)))
  +  (find type '(void bool int float)))
   
   (defun pointer-type-p (type)
     (assert (valid-type-p type))
     (find type '(int* float*)))
   
   (defun valid-type-p (type)
  -  (find type '(void int int* float float*)))
  +  (find type '(void bool int int* float float*)))
   
   (defvar +cffi-type-table+ '(int :int
                               float :float))
  
positive.code:       (getf +cffi-type-table+ type)))
  
  (defun kernel-arg-names (arg-bindings)
    ;; ((a float*) (b float*) (c float*) (n int)) → (a b c n)
    (mapcar #'car arg-bindings))
  
  (defun kernel-arg-names-as-pointer (arg-bindings)
    ;; ((a float*) (b float*) (c float*) (n int)) → (a b c n-ptr)
    (mapcar #'arg-name-as-pointer arg-bindings))
  
  (defun arg-name-as-pointer (arg-binding)
  
negative.code:         var)))
  
  (defun kernel-arg-foreign-pointer-bindings (arg-bindings)
    ; ((a float*) (b float*) (c float*) (n int)) -> ((n n-ptr :int))
    (mapcar #'foreign-pointer-binding
      (remove-if-not #'arg-binding-with-non-pointer-type-p arg-bindings)))
  
  