7.0.0.18
12 Legacy Forms
The following forms are provided by Typed Racket for backwards compatibility.
语法
(lambda: formals . body)
formals = ([v : t] ...) | ([v : t] ... v : t *) | ([v : t] ... v : t ooo bound)
A function of the formal arguments v, where each formal
argument has the associated type. If a rest argument is present, then
it has type (Listof t).
语法
(λ: formals . body)
An alias for the same form using lambda:.
A polymorphic function, abstracted over the type variables
a. The type variables a are bound in both the types
of the formal, and in any type expressions in the body.
语法
(opt-lambda: formals . body)
formals = ([v : t] ... [v : t default] ...) | ([v : t] ... [v : t default] ... v : t *) | ([v : t] ... [v : t default] ... v : t ooo bound)
A function with optional arguments.
语法
(popt-lambda: (a ...) formals . body)
(popt-lambda: (a ... a ooo) formals . body)
A polymorphic function with optional arguments.
An alias for case-lambda.
语法
(pcase-lambda: (a ...) [formals body] ...)
(pcase-lambda: (a ... b ooo) [formals body] ...)
A polymorphic function of multiple arities.
Local bindings, like let, each with
associated types. In the second form, t0 is the type of the
result of loop (and thus the result of the entire
expression as well as the final
expression in body).
Type annotations are optional.
Examples:
> (: filter-even : (Listof Natural) (Listof Natural) -> (Listof Natural))
> (define (filter-even lst accum) (if (null? lst) accum (let: ([first : Natural (car lst)] [rest : (Listof Natural) (cdr lst)]) (if (even? first) (filter-even rest (cons first accum)) (filter-even rest accum))))) > (filter-even (list 1 2 3 4 5 6) null) - : (Listof Nonnegative-Integer)
'(6 4 2)
Examples:
> (: filter-even-loop : (Listof Natural) -> (Listof Natural))
> (define (filter-even-loop lst) (let: loop : (Listof Natural) ([accum : (Listof Natural) null] [lst : (Listof Natural) lst]) (cond [(null? lst) accum] [(even? (car lst)) (loop (cons (car lst) accum) (cdr lst))] [else (loop accum (cdr lst))]))) > (filter-even-loop (list 1 2 3 4)) - : (Listof Nonnegative-Integer)
'(4 2)
语法
(plet: (a ...) ([v : t e] ...) . body)
A polymorphic version of let:, abstracted over the type variables
a. The type variables a are bound in both the types
of the formal, and in any type expressions in the body.
Does not support the looping form of let.
语法
(letrec: ([v : t e] ...) . body)
语法
(let*: ([v : t e] ...) . body)
语法
(let-values: ([([v : t] ...) e] ...) . body)
语法
(letrec-values: ([([v : t] ...) e] ...) . body)
语法
(let*-values: ([([v : t] ...) e] ...) . body)
Type-annotated versions of
letrec, let*, let-values,
letrec-values, and let*-values. As with
let:, type annotations are optional.
语法
(define: v : t e)
(define: (a ...) v : t e) (define: (a ... a ooo) v : t e) (define: (f . formals) : t . body) (define: (a ...) (f . formals) : t . body) (define: (a ... a ooo) (f . formals) : t . body)
These forms define variables, with annotated types. The first form
defines v with type t and value e. The second
form does the same, but allows the specification of type variables. The third
allows for polydotted variables. The fourth, fifth, and sixth forms define a
function f with appropriate types. In most cases, use of : is
preferred to use of define:.
Examples:
> (define: foo : Integer 10) > (define: (A) mt-seq : (Sequenceof A) empty-sequence)
> (define: (add [first : Integer] [rest : Integer]) : Integer (+ first rest))
> (define: (A) (poly-app [func : (A A -> A)] [first : A] [rest : A]) : A (func first rest))
语法
An alias for struct.
An alias for define-struct.
An alias for define-struct/exec.
语法
An alias for for.
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
语法
Aliases for the same iteration forms without a :.
语法
An alias for do.
Equivalent to define-type.
Equivalent to define-struct:
Similar to using the opaque
keyword with require/typed.
Similar to using the struct
keyword with require/typed.
Similar to
require-typed-struct, but also provides the imported identifiers.
语法
Defines a polymorphic function.
语法
(pred t)
语法
An alias for U.
语法
An alias for Rec.
语法
An alias for List.
An alias for Parameterof.
语法
An alias for Pairof.
语法
An alias for Values.