Skip to content

Instantly share code, notes, and snippets.

View danielneal's full-sized avatar

Daniel Neal danielneal

View GitHub Profile
@danielneal
danielneal / gym2.clj
Last active March 18, 2019 15:59
gym2.clj
(ns gym.core)
(def db
{:equipment {:dumbells {:equipment :dumbells
:weights (vec (range 10 40 2))}
:barbell {:equipment :barbell
:weights (vec (range 20 300 2.5))}
:barbell2 {:equipment :barbell
:weights (vec (range 20 300 5))}}
(def db (atom {:counter 0}))
(defmulti query (fn [db query-v] query-v))
(defmethod query :default
[db query-v]
(cond
(keyword? query-v) (get db query-v)
(vector? query-v) (get-in db query-v)
(set? query-v) (select-keys db (into [] query-v))
@danielneal
danielneal / deps.edn
Last active December 4, 2018 09:25
Using CLJ command line tools with emacs
{:paths ["resources" "src"]
:deps {org.clojure/clojure {:mvn/version "1.10.0-rc2"}}
:aliases
{:nrepl {:extra-deps {nrepl/nrepl {:mvn/version "0.5.0"}
cider/cider-nrepl {:mvn/version "0.19.0-SNAPSHOT"}
refactor-nrepl {:mvn/version "2.4.0"}}
:main-opts ["-m" "nrepl.cmdline"
"--middleware" "[cider.nrepl/cider-middleware,refactor-nrepl.middleware/wrap-refactor]"]}}}
@danielneal
danielneal / compound2.clj
Last active November 4, 2018 18:49
Compound - combining state and reducing functions
(ns compound2.core)
(defn no-op
([acc] acc)
([acc x] acc))
(defn connect
"Connects a tree of transducers together"
[[xf & xfs]]
(let [xfs (map #(if (vector? %) (connect %) %) xfs)]
@danielneal
danielneal / onions.clj
Last active August 13, 2018 09:43
Clojure tachyons for react native
(ns onions.core
"Clojure tachyons for react native.
Provides a shorthand to a constrained set of atomic css properties i.e.
(style [:flx-row :aifs :jcsb :bg-ui0 :br1]) ; =>
{:flexDirection "row",
:alignItems "flex-start",
:justifyContent "space-between",
(ns gym.core)
(def db
{:equipment [{:equipment :dumbells
:weights (vec (range 10 40 2))}
{:equipment :barbell
:weights (vec (range 20 300 2.5))}]
:exercises [{:exercise :dumbell-bench
:equipment :dumbells}
{:exercise :squat
@danielneal
danielneal / compound.scratch.clj
Last active May 8, 2018 16:01
Thinking about compound some more
(ns compound.scratch
(:require [net.cgrand.xforms :as x]))
(defmulti plus identity)
(defmulti minus identity)
(defmulti xform identity)
(defmulti zero identity)
(defmethod plus :count-odd-a [_] (fn
([a] a)
(ns app.graphql-interceptor
(:require [re-frame.core :as reframe :refer [->interceptor]]
[cljs.spec.alpha :as s]
[app.reg-event :refer [reg-event-fx]]
[app.util :as util]
[clojure.set :as set]))
(set! *warn-on-infer* true)
(def graphql->http
(ns stupidsense.core
(:require [clojure.spec.alpha :as s]
[clojure.string :as str]
[clojure.core.specs.alpha]))
(def blacklist-ns #{"clojure.core"})
(defn fn-specs [registry]
(into {} (for [[sym spec] registry
:let [form (s/form spec)]
@danielneal
danielneal / args.clj
Last active October 26, 2017 11:00
How to get the args of a fn spec?
;; How do I get the args of a fn spec?
;; (I'd like to do some kind of dumb intellisense using specs in the registry)
;; For example, with a function a
(defn a [m]
(get m :foo))
(s/fdef a
:args (s/cat :m map?)
:ret int?)