Undo the previous change to SUBTYPEP and eliminate recursive types from proclamations.lsp

parent 2f9e9936
......@@ -79,6 +79,8 @@
(deftype array-rank-index ()
'(integer 0 #.(1- array-rank-limit)))
(deftype association-list ()
'(or null (cons cons association-list)))
(deftype byte-specifier ()
"The type of the output of BYTE."
......@@ -133,8 +135,12 @@
(deftype pathname-version ()
'(or unsigned-byte (member nil :wild :newest :unspecific)))
(deftype proper-list ()
'(or null (cons t proper-list)))
(deftype property-list ()
'(or null (cons t (cons t property-list))))
(deftype radix ()
'(integer 2 36))
......@@ -1093,8 +1093,8 @@ if not possible."
;; The problem with the code below is that it does not suport infinite
;; recursion. Instead we just canonicalize everything to CONS, irrespective
;; of whether the arguments are valid types or not!
(canonical-type 'CONS)
(canonical-type 'CONS)
(let ((car-tag (if (eq car-type '*) -1 (canonical-type car-type)))
(cdr-tag (if (eq cdr-type '*) -1 (canonical-type cdr-type))))
(cond ((or (zerop car-tag) (zerop cdr-tag))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment