Ist es möglich, einen rekursiven Typ in Common Lisp zu definieren?

Ein rekursiver Typ ist ein Typ, der eine Basis und einen rekursiven Fall von sich selbst hat.

ch wollte, dass dies "typisierte Listen" implementiert, d. H. Listen, deren Conses nur den gleichen Elementtyp oder Null zulasse

Ich habe folgende Definition ausprobiert:

(deftype list-of (a) `(or null
                          (cons ,a (list-of ,a))))

Dies ist jedoch ein Hinweis auf ein Stack-Problem (zumindest bei SBCL), da der Compiler versucht, eine Liste von auf unbestimmte Zeit zu wiederholen. Ist es möglich einen solchen Datentyp zu definieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage