Skip to content
Contract programming for Clojure.
Find file
New pull request
Latest commit 1d9b30f @dnaumov Finished record invariants


Clojure-contracts is a library for contract programming in Clojure.

WARNING: this is a work in progress. It's not feature complete and may contain bugs.


See the tutorial.

A quick example:

user> (defn foo [x] (+ x 5))

user> (foo nil) ;=>
 No message.
 [Thrown class java.lang.NullPointerException]

user> (provide-contract foo (c/=> number? number?))

user> (foo nil) ;=>
 Precondition failed for var #'user/foo 
 Expecting: number? 
 Given: nil

See the tutorial for details.


Add [clojure-contracts "0.0.1-SNAPSHOT"] to your project's dependecies. Clojars page.


Copyright (C) 2012 Dmitri Naumov

Distributed under the Eclipse Public License, the same as Clojure.

Something went wrong with that request. Please try again.