8.4 Datatypes and Serialization
Prefab structure types (see Prefab Structure Types)
automatically support serialization: they can be written to
an output stream, and a copy can be read back in from an input stream:
Other structure types created by struct, which offer
more abstraction than prefab structure types, normally
write either using #<....> notation (for
opaque structure types) or using #(....) vector
notation (for transparent structure types). In neither can the
result be read back in as an instance of the structure type:
The serializable-struct form defines a structure type
that can be serialized to a value that can be printed using
write and restored via read. The serialized
result can be deserialized to get back an instance of the
original structure type. The serialization form and functions are
provided by the racket/serialize library.
In addition to the names bound by struct,
serializable-struct binds an identifier with deserialization
information, and it automatically provides the
deserialization identifier from a module context. This deserialization
identifier is accessed reflectively when a value is deserialized.