anchor.diff:        (array-type-p object)))
   
   (defun cffi-type (type)
  -  (etypecase type
  -    (scalar-type (scalar-cffi-type type))
  -    (structure-type (structure-cffi-type type))
  -    (array-type (array-cffi-type type))))
  +  (cond
  +    ((scalar-type-p type) (scalar-cffi-type type))
  +    ((structure-type-p type) (structure-cffi-type type))
  +    ((array-type-p type) (array-cffi-type type))
  +    (t (error "The value ~S is an invalid cl-cuda type." type))))
   
   (defun cffi-type-size (type)
  -  (etypecase type
  -    (scalar-type (scalar-cffi-type-size type))
  -    (structure-type (structure-cffi-type-size type))
  -    (array-type (array-cffi-type-size type))))
  +  (cond
  +    ((scalar-type-p type) (scalar-cffi-type-size type))
  +    ((structure-type-p type) (structure-cffi-type-size type))
  +    ((array-type-p type) (array-cffi-type-size type))
  +    (t (error "The value ~S is an invalid cl-cuda type." type))))
   
   (defun cuda-type (type)
  -  (etypecase type
  -    (scalar-type (scalar-cuda-type type))
  -    (structure-type (structure-cuda-type type))
  -    (array-type (array-cuda-type type))))
  +  (cond
  +    ((scalar-type-p type) (scalar-cuda-type type))
  +    ((structure-type-p type) (structure-cuda-type type))
  +    ((array-type-p type) (array-cuda-type type))
  +    (t (error "The value ~S is an invalid cl-cuda type." type))))
   
   
   ;;;
  
positive.code:     (double :double "double")
      (curand-state-xorwow (:struct curand-state-xorwow)
                           "curandStateXORWOW_t")))
  
  (deftype scalar-type ()
    '(satisfies scalar-type-p))
  
  (defun scalar-type-p (object)
    (and (assoc object +scalar-types+)
  
negative.code: (defparameter +structure-types+
    (mapcar #'car +structure-table+))
  
  (defun structure-type-p (object)
    (and (member object +structure-types+)
         t))
  