► |  | The Racket Reference

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

▼ | 7 | Units

7.1 | Creating Units
7.2 | Invoking Units
7.3 | Linking Units and Creating Compound Units
7.4 | Inferred Linking
7.5 | Generating A Unit from Context
7.6 | Structural Matching
7.7 | Extending the Syntax of Signatures
7.8 | Unit Utilities
7.9 | Unit Contracts
7.10 | Single-Unit Modules
7.11 | Single-Signature Modules
7.12 | Transformer Helpers

top ← prev up next →

#### 7.11`` Single-Signature Modules

#lang racket/signature | package: base

The racket/signature language treats a module body as a unit signature.

The body must match the following module-body grammar:

module-body |  | = |  | (require require-spec ...) ... sig-spec ...

See Creating Units for the grammar of sig-spec. Unlike the body of a racket/unit module, a require in a racket/signature module must be a literal use of require.

The resulting signature is exported as base^, where base is derived from the enclosing module’s name (i.e., its symbolic name, or its path without the directory and file suffix). If the module name ends in -sig, then base corresponds to the module name before -sig. Otherwise, the module name serves as base.

A struct form as a sig-spec is consistent with the definitions introduced by define-struct, as opposed to definitions introduced struct. (That behavior was originally a bug, but it is preserved for compatibility.)

top ← prev up next →