View loan-payment-data.json
[{"loan":{"id":1,"borrower_id":1,"amount":10984659,"term":120},"period":{"start_at":"2017-05-22T00:00:00-06:00","end_at":"2017-06-21T23:59:59-06:00"},"principal":57702,"interest":83752,"rate_annual":900,"service_fee":{"amount":0,"rate":0}},{"loan":{"id":1,"borrower_id":1,"amount":10984659,"term":120},"period":{"start_at":"2017-06-22T00:00:00-06:00","end_at":"2017-07-21T23:59:59-06:00"},"principal":56262,"interest":80629,"rate_annual":900,"service_fee":{"amount":0,"rate":0}},{"loan":{"id":1,"borrower_id":1,"amount":10984659,"term":120},"period":{"start_at":"2017-07-22T00:00:00-06:00","end_at":"2017-08-21T23:59:59-06:00"},"principal":58577,"interest":82877,"rate_annual":900,"service_fee":{"amount":0,"rate":0}},{"loan":{"id":1,"borrower_id":1,"amount":10984659,"term":120},"period":{"start_at":"2017-08-22T00:00:00-06:00","end_at":"2017-09-21T23:59:59-06:00"},"principal":59026,"interest":82428,"rate_annual":900,"service_fee":{"amount":0,"rate":0}},{"loan":{"id":1,"borrower_id":1,"amount":10984659,"term":120},"peri |
View tempids.clj
[{:op :create-company | |
:name "Foobar Company" | |
:id "tempid/company"} | |
{:op :create-employee | |
:name "Alice" | |
:company_id "tempid/company" | |
:id "tempid/user1"} | |
{:op :create-employee | |
:name "Bob" | |
:company_id "tempid/company" |
View gist:d2fd7413a5d68f404b871526c58b4bc3
Run this to launch REPL | |
rlwrap clj -Srepro -Sdeps '{:deps {speculative {:mvn/version "0.0.3"} expound {:mvn/version "0.7.2"} org.clojure/test.check {:mvn/version "0.9.0"} org.clojure/clojurescript {:mvn/version "1.10.520"}}}' -e "(require '[expound.alpha :as expound] '[cljs.core.specs.alpha]) (set! clojure.spec.alpha/*explain-out* (expound/custom-printer {:print-specs? false :show-valid-values? true :theme :figwheel-theme}))" -m cljs.main -re node | |
Then run this in REPL | |
(require '[expound.alpha :as expound] '[cljs.core.specs.alpha] '[speculative.instrument :as i]) (i/instrument) (set! cljs.spec.alpha/*explain-out* (expound/custom-printer {:print-specs? false :show-valid-values? true :theme :figwheel-theme})) |
View cljs_1_10_339.cljs
;; Note this uses clojure 1.9, not 1.10 like other examples | |
;; clj -Srepro -Sdeps '{:deps {org.clojure/test.check {:mvn/version "0.9.0"} org.clojure/clojure {:mvn/version "1.9.0"} org.clojure/clojurescript {:mvn/version "1.10.339"}}}' --main cljs.main --repl | |
in cljs.main --repl | |
(require '[cljs.spec.alpha :as s]) | |
(require '[cljs.spec.test.alpha :as st]) | |
(require '[clojure.core.specs.alpha]) | |
;; instrumenting a function | |
(s/fdef foobar :args (s/cat :x int?)) |
View ex.clj
;; launch with | |
;; clj -Srepro -Sdeps '{:deps {org.clojure/test.check {:mvn/version "0.9.0"} org.clojure/clojure {:mvn/version "1.10.0-beta8"}}}' | |
(require '[clojure.spec.alpha :as s]) | |
(require '[clojure.spec.test.alpha :as st]) | |
;; instrumenting a function | |
(s/fdef foobar :args (s/cat :x int?)) | |
(defn foobar [x] x) |
View init.cljs
(require '[cljs.spec.alpha :as s]) | |
(require '[cljs.spec.test.alpha :as stest]) | |
(require '[expound.alpha :as expound]) | |
(require '[speculative.core]) | |
(set! s/*explain-out* (expound/custom-printer {:show-valid-values? true})) | |
(stest/instrument `map) | |
(try | |
(map 'lol 'lol) | |
(catch :default e | |
(println (.-message e)))) |
View ex.txt
> clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.10.0-alpha8"}}}' | |
Clojure 1.10.0-alpha8 | |
user=> (require '[clojure.spec.alpha :as s]) | |
nil | |
user=> ;; `explain-data` returns a description of the problem, including the `:in` path | |
user=> ;; which is the location of the invalid data within the context of the larger | |
user=> ;; data structure | |
user=> (-> (s/explain-data (s/coll-of int?) [1 "2"]) ::s/problems first) | |
{:path [], :pred int?, :val "2", :via [], :in [1]} | |
user=> (-> (s/explain-data (s/coll-of int?) [1 "2"]) ::s/problems first :in) |
View repl.txt
➜ ~ rlwrap clj -Srepro -Sdeps '{:deps {org.clojure/spec.alpha {:mvn/version "0.2.176"}}}' | |
Clojure 1.9.0 | |
user=> (require '[clojure.spec.alpha :as s]) | |
nil | |
user=> (s/def ::point1 (s/cat :x int? :y int?)) | |
user/point1 | |
user=> (s/def ::x int?) | |
:user/x | |
user=> (s/def ::y int?) | |
:user/y |
View simple_coerce.clj
;; Code is largely copied from | |
;; https://github.com/wilkerlucio/spec-coerce/blob/master/src/spec_coerce/core.cljc | |
;; with minor modifications! | |
(ns example.coercion | |
(:require [clojure.walk :as walk] | |
[clojure.spec.alpha :as s])) | |
(defonce ^:private registry-ref (atom {})) | |
;; WARNING - only works if all unqualified kw are unique!!!! |
View repl.txt
Clojure 1.9.0 | |
user=> (require '[clojure.spec.alpha :as s]) | |
nil | |
user=> (require '[expound.alpha :as expound]) | |
nil | |
user=> (set! s/*explain-out* (expound/custom-printer {:theme :figwheel-theme :print-specs? false})) | |
#object[expound.alpha$custom_printer$fn__897 0x534243e4 "expound.alpha$custom_printer$fn__897@534243e4"] | |
user=> (s/check-asserts true) | |
true | |
user=> (defrecord Person [first-name last-name]) |
NewerOlder