▼ |  | Syntax: Meta-Programming Helpers

1 | Parsing and Specifying Syntax
2 | Syntax Object Helpers
3 | Datum Pattern Matching
4 | Module-Processing Helpers
5 | Macro Transformer Helpers
6 | Reader Helpers
7 | Parsing for Bodies
8 | Unsafe for Clause Transforms
9 | Source Locations
10 | Preserving Source Locations
11 | Non-Module Compilation And Expansion
12 | Trusting Standard Recertifying Transformers
13 | Attaching Documentation to Exports
14 | Contracts for Macro Subexpressions
15 | Macro Testing
16 | Internal-Definition Context Helpers
| Index

On this page:

expand-for-clause

8.2
top ← prev up next →

### 8`` Unsafe for Clause Transforms

(require syntax/unsafe/for-transform) | package: base

The syntax/unsafe/for-transform module provides a helper function that gives access to the sequence transformers defined by define-sequence-syntax. This is what the for forms use and enables faster sequence traversal than what the sequence interface provides.
The output may use unsafe operations.

> > procedure

> > (expand-for-clause orig-stx clause) → syntax?

> orig-stx : syntax?
> clause : syntax?

Expands a for clause of the form [(x ...) seq-expr], where x are identifiers, to:

> (([(outer-id ...) outer-expr] ...)
> outer-check
> ([loop-id loop-expr] ...)
> pos-guard
> ([(inner-id ...) inner-expr] ...)
> pre-guard
> post-guard
> (loop-arg ...))

which can then be spliced into the appropriate iterations. See :do-in for more information.

The result may use unsafe operations.

The first argument orig-stx is used only for reporting syntax errors.

top ← prev up next →