▼ |  | Unstable: May Change Without Warning

1 | Guidelines for Developing unstable Libraries
2 | Automata: Compiling State Machines
3 | Bytes
4 | Contracts
5 | Contracts for Macro Subexpressions
6 | Debugging
7 | Definitions
8 | Errors
9 | Futures
10 | Functions
11 | Hash Tables
12 | Interface-Oriented Programming for Classes
13 | Lazy Require
14 | Lists
15 | Logging
16 | Macro Testing
17 | Mark Parameters
18 | Match
19 | Open place expressions
20 | Option Contracts
21 | Parameter Groups
22 | Pretty-Printing
23 | Re-Contracting Identifiers
24 | Sandbox
25 | Sequences
26 | Strings
27 | Structs
28 | Struct Printing
29 | Syntax
30 | Temporal Contracts: Explicit Contract Monitors
31 | Unix Domain Sockets
32 | 2D Syntax

On this page:

at-end
in-phase1
in-phase1/ pass2

6.1.1
top ← prev up next →

### 7`` Definitions

Carl Eastlund <cce@racket-lang.org>

This library is unstable; compatibility will not be maintained. See Unstable: May Change Without Warning for more information.

(require unstable/define) | package: unstable-lib

Provides macros for creating and manipulating definitions.

> syntax (at-end expr)

When used at the top level of a module, evaluates expr at the end of the module. This can be useful for calling functions before their definitions.

Examples:
> > (module Failure scheme
> (f 5)
> (define (f x) x))
> > (require 'Failure)
> f: undefined;
> cannot reference an identifier before its definition
> in module: 'Failure
> > (module Success scheme
> (require unstable/define)
> (at-end (f 5))
> (define (f x) x))
> > (require 'Success)

> syntax (in-phase1 e)

Executes e during phase 1 (the syntax transformation phase) relative to its context, during pass 1 if it occurs in a head expansion position.

> syntax (in-phase1/pass2 e)

Executes e during phase 1 (the syntax transformation phase) relative to its context, during pass 2 (after head expansion).
top ← prev up next →