Contract programming for Clojure.
Clojure
Latest commit 1d9b30f May 18, 2012 @dnaumov Finished record invariants

README.md

Clojure-contracts

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.

Usage

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.

Installation

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

License

Copyright (C) 2012 Dmitri Naumov

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