Unexpected (to me) behaviour in Lisp sub-typing I just encountered some unexpected behaviour in how Common Lisp (or at least SBCL ) handles array sub-typing. Suppose you have a structure declaration like this: ( defstruct A ( a #1A () :type ( simple-array integer ))) We can create instances of this struct by providing an initial value, and it will be type-checked. ( make-a :a #1A ( 1 2 3 )) #S(A…