std.contract.binding

bind

added in 3.0

(bind contract)

binds the contract to its var

(defn -minus- (x y (- x y)))

(do (bind (contract #‘-minus- [])) (bound? #’-minus-)) => true

bound?

added in 3.0

(bound? obj)

checks if contract is bound to var

(bound? #’-add-) => false

(bound? #’-contract-) => false

(bound? -contract-) => false

contract

added in 3.0

(contract var inputs)(contract var inputs output)

defines a contract given var and arguments

contract-info

added in 3.0

(contract-info {:keys [var], :as contract})

returns the contract info

(-> (contract #’-add- [] nil) (contract-info)) => map?

contract-invoke

added in 3.0

(contract-invoke contract & args)

invokes the contract

(-> (contract #’-add- [] nil) (contract-invoke 1 2)) => 3

contract-var?

added in 3.0

(contract-var? var)

checks if var contains a contract

(contract-var? #’-add-) => false

(contract-var? #’-contract-) => true

contract?

added in 3.0

(contract? obj)

checks if object is a contract

defcontract

macro

added in 3.0

(defcontract sym & body)

defines a contract

(type/defspec integer?)

(defcontract -add- :inputs )

(-add- 0.5 0.5) => (throws)

parse-arg

added in 3.0

(parse-arg obj)

parses an input/output arg

(type/defspec number?)

(parse-arg { :strict})

unbind

added in 3.0

(unbind obj)

unbinds the contract to its var

(do (unbind #‘-minus-) (bound? #’-minus-)) => false