Verbosity trimming [:f]
- infix rip [:c]
- annotations [:f]
(defn tests [] | |
[{:name 'suiteA | |
:total 3 | |
:passed (promise) | |
:failed (promise) | |
:success (promise) | |
:tests [{:name 'testA :success (promise)} | |
{:name 'testB :success (promise)} | |
{:name 'testC :success (promise)}]} | |
{:name 'suiteB |
(kontract doubler | |
[x] | |
:requires | |
(pos? x) | |
:ensures | |
(= (* 2 x) %) | |
[x y] | |
:requires |
(ns joc | |
(:use [clojure.test])) | |
(defn rpn-orig | |
([tokens] (rpn-orig tokens [])) | |
([[top & tail] stack] | |
(lazy-seq | |
(if top | |
(if (fn? top) | |
(let [l (peek stack) |
(defcontractedfn1 sqr | |
"Calculates the square of a number." | |
([n] | |
:requires | |
(number? n) | |
(not (zero? n)) | |
:body | |
(* n n) |
(defconstrainedfn sqr | |
"Calculates the square of a number." | |
([n] | |
:requires | |
(number? n) | |
(not (zero? n)) | |
:ensures | |
(pos? %) |
(ns user | |
(:use clojure.set)) | |
;; core | |
(defstruct monad :unit :bind :run :zero :plus) | |
(defmacro defmonad [name & fdecl] | |
(let [[doc defs] | |
(if (string? (first fdecl)) |
(defconstrainedfn sqr | |
"Squares a number" | |
[n] | |
:requires | |
(number? n) | |
(not= 0 n) | |
:ensures | |
(pos? %) | |
(sqr 5) | |
;=> 25 | |
(sqr -5) | |
;=> 25 | |
(sqr 0) | |
; java.lang.AssertionError: Assert failed: (not (zero? n)) |
(defconstrainedfn doubler | |
"Defines a function that doubles its input." | |
([n] | |
:requires | |
(number? n) | |
:ensures | |
(= (* 2 n) %) | |
:body |