that all @code{SCM} values that it references have already been freed
and are thus invalid.
+It must also not call any libguile function or macro except
+@code{scm_gc_free}, @code{SCM_SMOB_FLAGS}, @code{SCM_SMOB_DATA},
+@code{SCM_SMOB_DATA_2}, and @code{SCM_SMOB_DATA_3}.
+
The @var{free} procedure must return 0.
@end deftypefn
using @code{scm_gc_free}. @xref{Garbage Collecting Smobs}, for more
details.
+This function operates while the heap is in an inconsistent state and
+must therefore be careful. @xref{Smobs}, for details about what this
+function is allowed to do.
+
@item print
Guile will apply this function to each instance of the new type to print
the value, as for @code{display} or @code{write}. The default print