View updating-unique-ids-yuck.clj
;; good repro #0: problem statement | |
;; in n takes (tricks: translate domain words into Datomic words, be precise.) | |
;; 0. "Two datoms in transaction conflict" move an entity id to a reference entity take | |
;; 1. "Retracting an entity and adding an entity" | |
;; ... | |
;; 5. "Retracting a unique identity datom and asserting the same identity on another datom causes | |
;; "2 datoms in transaction conflict" | |
;; good repro #1: depend only on Datomic API |
View squuid-created-at.clj
(defn squuid-created-at | |
"Pull the date back out of a squuid. This will be nonsense if the UUID | |
passed in was not a squuid!" | |
[^java.util.UUID uuid] | |
(let [secs (bit-shift-right (.getMostSignificantBits uuid) 32)] | |
(java.util.Date. (* secs 1000)))) |
View renames_spec.clj
;; see also https://twitter.com/thing_umbrella/status/1111427898487898113 | |
(require '[clojure.spec.alpha :as s]) | |
;; spec that ensures the keys in renames match the keys in map | |
(s/def ::rename-keys-args | |
(s/and (s/cat :map map? :renames map?) | |
(fn [{:keys [map renames]}] | |
(every? map (keys renames))))) | |
;; ok |
View example.clj
(let [a 1 b]) | |
Syntax error macroexpanding clojure.core/let at (REPL:5:1). | |
[a 1 b] - failed: even-number-of-forms? at: [:bindings] spec: :clojure.core.specs.alpha/bindings |
View specs_over_tests.clj
;; compare to https://gist.github.com/lensgolda/13e549476fb65d3b8c2d71ca59b15937#file-test-clj | |
(require '[clojure.spec.alpha :as s]) | |
;; general domain knowledge, not buried in a test | |
(s/def ::info (s/keys :req-un [::name])) | |
(s/def ::items (s/coll-of pos-int?)) | |
(s/def ::active boolean?) | |
;; knowledge specific to this test data |
View expression_at_at_time.clj
(ns foo) | |
(defn hello [x] (str "Hi " x)) | |
(ns bar) | |
(println (foo/hello "there")) | |
(remove-ns 'foo) | |
(println (resolve 'foo/hello)) |
View clj_2373_examples.clj
(require | |
'[clojure.main :as main] | |
'[clojure.pprint :as pp]) | |
(def strings | |
"Some strings that should fail somewhere in read/compile" | |
[":::5" | |
"(let [x])" | |
"(cond 1)" | |
"defmulti 5 class)" |
View fizzbuzz.clj
(->> [(cycle [:fizz :_ :_]) | |
(cycle [:buzz :_ :_ :_ :_])] | |
(apply map vector) | |
(take 25)) |
View clj_2373_take_1.clj
(comment "interop runtime exception repl-caught") | |
(/ 1 0) | |
ArithmeticException Divide by zero clojure.lang.Numbers.divide (Numbers.java:163) | |
(comment "interop runtime exception pst") | |
(pst) | |
ArithmeticException Divide by zero | |
clojure.lang.Numbers.divide (Numbers.java:163) | |
clojure.lang.Numbers.divide (Numbers.java:3833) | |
;; elided |
View inline_testing.clj
(defn round5 | |
"Round to the closest positive multiple of 5. | |
Negative numbers round to 0, which is not | |
considered a multiple of 5." | |
{:test (fn [] (let [roundsto (fn [e] #(= e (round5 %)))] | |
(testing "Negative numbers" | |
(is (every? (roundsto 0) (range -20 0)))) | |
(testing "Positive numbers rounding to 5" | |
(is (every? (roundsto 5) (range 0 8)))) | |
(testing "Positive numbers rounding not to 5" |
NewerOlder