► |  | Reference: Racket

1 | Language Model
2 | Syntactic Forms
3 | Datatypes
4 | Structures
5 | Classes and Objects
6 | Units
7 | Contracts
8 | Pattern Matching
9 | Control Flow
10 | Concurrency
11 | Macros
12 | Input and Output
13 | Reflection and Security
14 | Operating System
15 | Memory Management
16 | Unsafe Operations
17 | Running Racket
| Bibliography
| Index

▼ | 12 | Input and Output

12.1 | Ports
12.2 | Byte and String Input
12.3 | Byte and String Output
12.4 | Reading
12.5 | Writing
12.6 | The Reader
12.7 | The Printer
12.8 | Pretty Printing
12.9 | Reader Extension
12.10 | Printer Extension
12.11 | Serialization
12.12 | Fast-Load Serialization

On this page:

s-exp->fasl
fasl->s-exp

top ← prev up next →

#### 12.12`` Fast-Load Serialization

( require racket/fasl )

The bindings documented in this section are provided by the racket/fasl library, not racket/base or racket.

( s-exp->fasl v [out]) → ( or/c ( void ) bytes? )
v : any/c
out : ( or/c output-port? #f) = #f

( fasl->s-exp in) → any/c
in : ( or/c input-port? bytes? )

The s-exp->fasl function serializes v to a byte string, printing it directly to out if out is an output port or return the byte string otherwise. The fasl->s-exp function decodes a value from a byte string (supplied either directly or as an input port) that was encoded with s-exp->fasl.

The v argument must be a value that could be quoted as a literal, because s-exp->fasl essentially uses ( compile `',v) to encode the value using Racket’s built-in fast-load format for bytecode.

The byte-string encoding produced by s-exp->fasl is specific to a version of Racket. That is, the resulting byte string can be decoded back to v only using the same version with which it was encoded.

Examples:
> ( define fasl ( s-exp->fasl ( list #("speed") 'racer #\!)))
> fasl
#"#~\0055.0.2\1\0\0\0\1\0\0\0\0\36\0\0\0\237$\24i\237$\20\0\20\0\25_\20\1\6\5\5speedAracer\a!"
> ( fasl->s-exp fasl)
'(#("speed") racer #\!)

top ← prev up next →