Skip to content

Instantly share code, notes, and snippets.

View gist:d6419a289a64c503010c
"@context": {
"name": "",
"homepage": {
"@id": "",
"@type": "@id"
wagjo / gist:b687158ab0ff6aa8cb33
Last active Aug 29, 2015
Foldable multireducible
View gist:b687158ab0ff6aa8cb33
;; excerpt of foldable multireducible impl
;; - introducing concept of mutable iterator, which is
;; much faster than seq
;; - this is for a (yet unreleased) custom patched clojure,
;; where clojure.lang interfaces can behave like protocols
;; - map is reducer variant, thats why I have to call seq on it
;; - seq is patched to support any reducible, not just Seqable
(defn fold-sectionable
wagjo / gist:10017343
Last active Aug 29, 2015
Upcoming library* for multireducibles
View gist:10017343
;; Multireducibles (with support for folding)
(def s1 "Hello World")
(def s2 "lllllllllll")
;; create multireducible with zip
(seq (zip s1 s2))
;; => ((\H \l) (\e \l) (\l \l) (\l \l) (\o \l) (\space \l) (\W \l) (\o \l) (\r \l) (\l \l) (\d \l))
wagjo / gist:9958354
Created Apr 3, 2014
Upcoming reducible IO library for Clojure
View gist:9958354
;; Input vector of bytes
(def vec (into (vector-of :byte)
(repeatedly 1000000 #(rand-int 128))))
;; Output file
(def out ( "out.bin"))
;; Classic reduction -> 3835 ms
(let [write-fn (fn [r w] (.write out w))]
(time (reduce write-fn nil (map dec vec))))
View gist:9813500
(defn update-in*
[m [k & ks] f & args]
(let [k (if (and (instance? clojure.lang.Indexed m)
(integer? k)
(neg? k))
(+ (count m) k)
(if ks
(assoc m k (apply update-in* (get m k) ks f args))
(assoc m k (apply f (get m k) args)))))
View gist:8786305
(defprotocol IMutable
(-cas! [o oldval newval]
"Sets the value to newval if and only if the current value
is identical to oldval. Returns true if set happened,
otherwse returns false. Mutates `o`.")
(-alter! [o f] [o f x] [o f x y] [o f x y z] [o f x y z args]
"Changes referenced value with (apply f val args).
Returns new value. Mutates `o`.")
(-reset! [o val]
"Resets the referenced value to `val`.
wagjo / gist:8731671
Created Jan 31, 2014
Playing with quil
View gist:8731671
(:use [quil.core])
(:require [clojure.string :as s]))
(defn setup []
(frame-rate 1)
(background 255))
(def *scale* 2)
wagjo / gist:8290237
Last active Jan 2, 2016
Bug in nrepl?
View gist:8290237
;; AOT before loading (e.g. with :aot :all in project.clj)
;; $ lein deps :tree
;; [clojure-complete "0.2.3" :exclusions [[org.clojure/clojure]]]
;; [org.clojure/clojure "1.5.1"]
;; [org.clojure/tools.nrepl "0.2.3" :exclusions [[org.clojure/clojure]]]
(ns ccc.core
(defprotocol P)
View gist:7640187
Type Error (user:1:5) Polymorphic function clojure.core/merge could not be applied to arguments:
Polymorphic Variables:
nil *
(clojure.lang.IPersistentMap k v) (clojure.lang.IPersistentMap k v) *
(Option (clojure.lang.IPersistentMap k v)) *