The foreign types form a subsystem of the SBCL type system. An
alien
type specifier provides a way to use any foreign type as a
Lisp type specifier. For example,
(typep foo '(alien (* int)))
can be used to determine whether foo is a pointer to a foreign
int
. alien
type specifiers can be used in the same ways
as ordinary Lisp type specifiers (like string
.) Alien type
declarations are subject to the same precise type checking as any
other declaration. See Precise Type Checking.
Note that the type identifiers used in the foreign type system overlap
with native Lisp type specifiers in some cases. For example, the type
specifier (alien single-float)
is identical to
single-float
, since foreign floats are automatically converted
to Lisp floats. When type-of
is called on an alien value that
is not automatically converted to a Lisp value, then it will return an
alien
type specifier.