12 Macros
On this page:
top
up

12.13Phase and Space UtilitiesπŸ”— i

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

The racket/phase+space library provides functions for manipulating combined representations of phase levels and binding spaces, particularly as used for require transformers and provide transformers.

When identifier-binding (and related functions, like identifier-transformer-binding ), syntax-local-module-exports , syntax-local-module-required-identifiers , module-compiled-exports , or module->exports produces a phase–space combination (or phase–space shift combination), then two such values that are equal? will be eqv? .

Added in version 8.2.0.3 of package base.

procedure

( phase? v)boolean?

v:any/c
Returns #t if v is a valid representation of a phase level, #f otherwise. A valid representation is either an exact integer representing a numbered phase level or #f representing the label phase level.

procedure

( space? v)boolean?

v:any/c
Returns #t if v is a valid representation of a binding space, #f otherwise. A valid representation is either an interned symbol representing the space whose scope is accessed via make-interned-syntax-introducer , or #f representing the default binding space.

procedure

( phase+space? v)boolean?

v:any/c
Returns #t if v is a valid representation of a phase level and binding space combination, #f otherwise. The possible representations are as follows:

  • a phase (in the sense of phase? ) by itself, which represents that phase plus the default binding space

  • a pair whose car is a phase and whose cdr is a non-#f space (in the sense of space? )

procedure

( phase+space phasespace)phase+space?

phase:phase?
space:space?
Returns a value to represent the combination of phase and space.

procedure

( phase+space-phase p+s)phase?

procedure

( phase+space-space p+s)phase?

Extracts the phase level or binding space component from a combination.

procedure

( phase+space-shift? v)boolean?

v:any/c
Returns #t if v is a valid representation of a phase level shift and binding space shift combination, #f otherwise. A shift can be applied to a combination of a phase level and binding space using phase+shift+. The possible representations of a shift are as follows:

  • exact integer — represents an amount to shift a phase level and no change to the binding space

  • #f — represents a shift to the label phase level and no change to the binding space

  • a pair whose car is an exact integer or #f, and whose cdr is a space (in the sense of space? ) — represents a phase level shift in the car and a change to the binding space that is in the cdr

procedure

( phase+space+ p+sshift)phase+space?

Applies shift to p+s to produce a new combination of phase level and binding space.

procedure

( phase+space-shift+ shiftadditional-shift)phase+space-shift?

shift:phase+space?
additional-shift:phase+space-shift?
Composes shift and additional-shift to produce a new shift that behaves the same as applying shift followed by additional-shift.

top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /