small doc improvements on internal definitions
This commit is contained in:
parent
bc4f4e7a45
commit
3b470fe47b
|
@ -604,7 +604,8 @@ then expansion stops without adding the identifier.
|
|||
@subsection[#:tag "intdef-body"]{Internal Definitions}
|
||||
|
||||
An @tech{internal-definition context} corresponds to a partial expansion step
|
||||
(see @secref["partial-expansion"]). A form that supports internal
|
||||
(see @secref["partial-expansion"]). Forms that allow internal definitions document
|
||||
such positions using the @racket[_body] meta-variable. A form that supports internal
|
||||
definitions starts by expanding its first form in an
|
||||
internal-definition context, but only partially. That is, it
|
||||
recursively expands only until the form becomes one of the following:
|
||||
|
|
|
@ -655,7 +655,7 @@ an identifier can be either imported or defined for a given
|
|||
|
||||
@defform[(local-require require-spec ...)]{
|
||||
|
||||
Like @scheme[require], but for use in a local-definition context to
|
||||
Like @scheme[require], but for use in a @tech{internal-definition context} to
|
||||
import just into the local context. Only bindings from @tech{phase
|
||||
level} 0 are imported.}
|
||||
|
||||
|
@ -1928,6 +1928,8 @@ defined as follows:
|
|||
@#,elem{if} (#,cvt head . _datum) = expr
|
||||
]
|
||||
|
||||
In an @tech{internal-definition context} (see @secref["intdef-body"]),
|
||||
a @racket[define] form introduces a local binding.
|
||||
At the top level, the top-level binding @racket[id] is created after
|
||||
evaluating @racket[expr], if it does not exist already, and the
|
||||
top-level mapping of @racket[id] (in the @techlink{namespace} linked
|
||||
|
@ -1958,6 +1960,8 @@ Evaluates the @racket[expr], and @tech{bind}s the results to the
|
|||
@racket[id]s; if @racket[expr] produces a different number of results,
|
||||
the @exnraise[exn:fail:contract].
|
||||
|
||||
In an @tech{internal-definition context} (see @secref["intdef-body"]),
|
||||
a @racket[define-values] form introduces local bindings.
|
||||
At the top level, the top-level binding for each @racket[id] is
|
||||
created after evaluating @racket[expr], if it does not exist already,
|
||||
and the top-level mapping of each @racket[id] (in the
|
||||
|
@ -1987,6 +1991,9 @@ The second form is a shorthand the same as for @racket[define]; it
|
|||
expands to a definition of the first form where the @racket[expr] is a
|
||||
@racket[lambda] form.}
|
||||
|
||||
In an @tech{internal-definition context} (see @secref["intdef-body"]),
|
||||
a @racket[define-syntax] form introduces a local binding.
|
||||
|
||||
@defexamples[#:eval (syntax-eval)
|
||||
(define-syntax foo
|
||||
(syntax-rules ()
|
||||
|
@ -2015,6 +2022,9 @@ When @racket[expr] produces zero values for a top-level
|
|||
position), then the @racket[id]s are effectively declared without
|
||||
binding; see @secref["macro-introduced-bindings"].
|
||||
|
||||
In an @tech{internal-definition context} (see @secref["intdef-body"]),
|
||||
a @racket[define-syntaxes] form introduces local bindings.
|
||||
|
||||
@defexamples[#:eval (syntax-eval)
|
||||
(define-syntaxes (foo1 foo2 foo3)
|
||||
(let ([transformer1 (lambda (syntax-object)
|
||||
|
|
Loading…
Reference in New Issue
Block a user