▼ |  | Unstable: May Change Without Warning

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

On this page:

at-end
in-phase1
in-phase1/ pass2

Version: 5.3.1
top ← prev up next →

### 8`` 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 )

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 →