When using type translators, the foreign value is the lower-level Lisp
value derived from the object passed to translate-to-foreign
(see translate-to-foreign). This value should be a Lisp number or
a pointer (satisfies pointerp
), and it can be treated like any
general Lisp object; it only completes the transformation to a true
foreign value when passed through low-level code in the Lisp
implementation, such as the foreign function caller or indirect memory
addressing combined with a data move.
In other contexts, this refers to a value accessible by C, but which
may only be accessed through CFFI functions. The closest you can
get to such a foreign value is through a pointer Lisp object, which
itself counts as a foreign value in only the previous sense.