anchor.diff:      (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+)
  
positive.code: 
  (defparameter +array-type-regex+
    "^([^\\*]+)(\\*+)$")
  
  (deftype array-type ()
    '(satisfies array-type-p))
  
  (defun array-type-p (object)
    (when (symbolp object)
  
negative.code:       (array-type-p object)))
  
  (defun 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)
    (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)
    (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))))
  
  
  ;;;
  