diff --git a/collects/typed-scheme/private/prims.ss b/collects/typed-scheme/private/prims.ss index c30a97a3..f235bcbd 100644 --- a/collects/typed-scheme/private/prims.ss +++ b/collects/typed-scheme/private/prims.ss @@ -20,7 +20,8 @@ This file defines two sorts of primitives. All of them are provided into any mod (provide (all-defined-out) - (rename-out [define-typed-struct define-struct:])) + (rename-out [define-typed-struct define-struct:] + [define-typed-struct/exec define-struct/exec:])) (require (except-in "../utils/utils.ss" extend)) (require (for-syntax diff --git a/collects/typed-scheme/ts-reference.scrbl b/collects/typed-scheme/ts-reference.scrbl index 27c9166c..824ff046 100644 --- a/collects/typed-scheme/ts-reference.scrbl +++ b/collects/typed-scheme/ts-reference.scrbl @@ -188,6 +188,12 @@ types. In most cases, use of @scheme[:] is preferred to use of @scheme[define:] structure is a substructure of @scheme[parent]. When @scheme[maybe-type-vars] is present, the structure is polymorphic in the type variables @scheme[v].} + +@defform/subs[ +(define-struct/exec: name-spec ([f : t] ...) [e : proc-t]) +([name-spec name (name parent)])]{ + Like @scheme[define-struct:], but defines an procedural structure. + The procdure @scheme[e] is used as the value for @scheme[prop:procedure], and must have type @scheme[proc-t].} @subsection{Type Aliases} @defform*[[(define-type-alias name t)