Skip to content

Instantly share code, notes, and snippets.

(s/defn parse-comment-request :- CommentRequest
[raw-request]
(update-in
(if (contains? raw-request :parent-comment-id)
(update-in raw-request [:parent-comment-id] long)
raw-request)
[:share-services]
(partial mapv keyword)))
(= +good-request+ (parse-comment-request +bad-request+))
(ns schema-examples (:require [schema.core :as s]))
(def CommentRequest
{(s/optional-key :parent-comment-id) long
:text String
:share-services [(s/enum :twitter :facebook :google)]})
(def +good-request+
{:parent-comment-id 2128123123
:text "This is awesome!"
@w01fe
w01fe / bench.clj
Created October 24, 2013 06:49
hiphip benchmarks
(ns user
(:require
[criterium.core :as criterium]
[hiphip.double :as d]))
(do
(def ^:const sz 10000)
(defmacro print-time
"Better, but involves external lib."
[expr]
@w01fe
w01fe / chan->lazy-seq.clj
Last active December 20, 2015 01:19
chan->lazy-seq
(ns async.core
(:require [clojure.core.async :as a]))
(def c (a/chan 10))
(a/go
(loop [i 0]
(println "putting" i)
(a/>! c i)
(if (< i 100)
@w01fe
w01fe / clear_leiningen_jvm_opts.clj
Created July 10, 2013 07:00
clear_leiningen_jvm_opts.clj
;; Clear Leiningen's default jvm-opts.
:jvm-opts ^:replace []
@w01fe
w01fe / slow_afill.clj
Created July 10, 2013 06:59
slow_afill.clj
;; Initialize xs to (range (alength xs)).
(afill! [[i x] xs] i)
@w01fe
w01fe / fill_string_pointwise_product.clj
Created July 10, 2013 06:59
fill_string_pointwise_product.clj
(defn fill-string-pointwise-product
[^{:tag "[Ljava.lang.String;"} os ^doubles xs ^longs ys]
(array/afill! String [_ os x xs y ys] (str (* x y))))
@w01fe
w01fe / top_k.clj
Created July 10, 2013 06:58
top_k.clj
(defn top-k
"Return the top k elements of xs according to score-fn"
[k score-fn xs]
(let [n (count xs)
scores (dbl/amake [i n] (score-fn (nth xs i)))
^ints idxs (dbl/amax-indices scores k)]
(seq (hiphip.array/amake Object [i k] (nth xs (aget idxs (- n i 1)))))))
@w01fe
w01fe / hiphip_mathy_ops.clj
Created July 10, 2013 06:57
hiphip_mathy_ops.clj
(defn standard-deviation [xs]
(let [mean (dbl/amean xs)
mean-sq (/ (dbl/asum [x xs] (* x x))
(dbl/alength xs))]
(Math/sqrt (- mean-sq (* mean mean)))))
(= 1 (dbl/amax-index (double-array [1.0 3.0 2.0])))
(defn max-normalize [xs]
(let [m (dbl/amax xs)]
@w01fe
w01fe / hiphip_pointwise_product.clj
Last active December 19, 2015 13:40
hiphip_pointwise_product.clj
(defn pointwise-product
"Produce a new double array with the product of corresponding elements of xs and ys"
[xs ys]
(dbl/amap [x xs y ys] (* x y)))