Index: /trunk/ccl/level-1/l1-typesys.lisp
===================================================================
--- /trunk/ccl/level-1/l1-typesys.lisp	(revision 588)
+++ /trunk/ccl/level-1/l1-typesys.lisp	(revision 589)
@@ -1375,5 +1375,5 @@
        (when (or (typep m 'cons)
 		 (typep m 'array))
-	 nil)))
+	 (return nil))))
     (union-ctype
      (every #'cacheable-ctype-p (union-ctype-types ctype)))
@@ -1394,4 +1394,10 @@
 		(or (null result)
 		    (cacheable-ctype-p result))))))
+    (negation-ctype
+     (cacheable-ctype-p (negation-ctype-type ctype)))
+    (cons-ctype
+     (and (cacheable-ctype-p (cons-ctype-car-ctype ctype))
+	  (cacheable-ctype-p (cons-ctype-cdr-ctype ctype))))
+    ;;; Anything else ?  Simple things (numbers, classes) can't lose.
     (t t)))
 		
