Skip to content

Instantly share code, notes, and snippets.

View fogus's full-sized avatar
💭
attempting to learn how to better learn

Fogus fogus

💭
attempting to learn how to better learn
View GitHub Profile

Verbosity trimming [:f]

ch1

  • infix rip [:c]

ch9

  • 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