8.11 Legacy Contracts
procedure
(make-proj-contract name proj first-order) → contract?
name : any/c
proj :
(or/c (-> any/c any/c (list/c any/c any/c) contact? (-> any/c any/c)) (-> any/c any/c (list/c any/c any/c) contact? boolean? (-> any/c any/c))) first-order : (-> any/c boolean?)
Builds a contract using an old interface.
Modulo errors, it is equivalent to:
(make-contract #:name name #:first-order first-order #:projection (cond [(procedure-arity-includes? proj 5) (lambda (blame) (proj (blame-positive blame) (blame-negative blame) (list (blame-source blame) (blame-value blame)) (blame-contract blame) (not (blame-swapped? blame))))] [(procedure-arity-includes? proj 4) (lambda (blame) (proj (blame-positive blame) (blame-negative blame) (list (blame-source blame) (blame-value blame)) (blame-contract blame)))]))
procedure
(raise-contract-error val src pos name fmt arg ...) → any/c val : any/c src : any/c pos : any/c name : any/c fmt : string? arg : any/c
Calls raise-blame-error after building a blame struct from
the val, src, pos, and name arguments.
The fmt string and following arguments are passed to
format and used as the string in the error message.
procedure
(contract-proc c)
→
(->* (symbol? symbol? (or/c syntax? (list/c any/c any/c))) (boolean?) (-> any/c any)) c : contract?
Constructs an old-style projection from a contract.
The resulting function accepts the information that is in a blame struct and returns a projection function that checks the contract.