7.10 Legacy Contracts
(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)))]))
(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.
(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.