Skip to content

Instantly share code, notes, and snippets.

;;;; transducer parser
;; channel that parses input bytes into utf8 chars
(def c (chan 10 (parse utf8)))
;;=> #'foo.baz/c
;; vector of utf8 encoded characters
(def v [-16 -99 -109 -105 -16 -99 -109 -82 -16 -99 -109 -75 -16 -99 -109 -75 -16 -99 -109 -72 32 -16 -99 -108 -128 -16 -99 -109 -72 -16 -99 -109 -69 -16 -99 -109 -75 -16 -99 -109 -83])
;;=> #'foo.baz/v
@wagjo
wagjo / gist:e3a273636b7d5a542172
Created August 18, 2015 14:49
emacs keybinding for setting window width
(defun set-window-width (n)
"Set the selected window's width."
(adjust-window-trailing-edge (selected-window) (- n (window-width)) t))
(defun set-70-columns ()
"Set the selected window to 80 columns."
(interactive)
(set-window-width 70))
(global-set-key "\C-x`" 'set-70-columns)
@wagjo
wagjo / gist:27ce6a34d5d5257a0790
Last active September 24, 2015 19:41
JWT Parsing in Dunaj
(ns foo.core
(:api dunaj)
(:require [dunaj.host.int :refer [i== iDOT]]
[dunaj.host.array :as dha]
[dunaj.format.base64 :refer [base64-safe]]
[dunaj.coll.recipe :refer [concat*]]
[dunaj.concurrent.port :refer [reduce! onto-chan!]]))
(def+ ByteColl [java.lang.Byte]) ;; type signature
@wagjo
wagjo / lazy seq from reducers
Last active December 21, 2015 16:39
lazy seq and interleave from reducers with core.async
(defn lazy-seq* [reducible]
(let [c (chan)
NIL (Object.)
encode-nil #(if (nil? %) NIL %)
decode-nil #(if (identical? NIL %) nil %)
reduce-fn (fn [r v] (>!! c (encode-nil v)))]
(thread
(reduce reduce-fn nil reducible)
(close! c))
(->> #(<!! c)
@wagjo
wagjo / gist:6442931
Created September 4, 2013 21:10
benchmarking string splitting
;; machine: amd64 Linux 2.6.32-48-server 16 cpu(s)
;; Java HotSpot(TM) 64-Bit Server VM 23.25-b01
;;
;; == without lazy seq realization
;; regex split: 258.567183 ms
;; parallelized regex split: 65.053176 ms - lazy seqs are not realized!
;; correct reduce: 623.541446 ms
;; correct fold: 252.817020 ms
;;
;; == lazy seq realization with (into [] %)
@wagjo
wagjo / 01-original.c
Last active December 23, 2015 10:09 — forked from Janiczek/01-original.c
// original
int CheckExtension (char *filename, char *ext)
{
char *s;
if (!filename) return(0);
if (strlen(filename) == 0) return(0);
s = strrchr(filename,'.');
if (!s) return(0);
if (!strcmp(s,ext)) return(1);
@wagjo
wagjo / gist:6743885
Created September 28, 2013 16:41
reducible slurp
(require '[clojure.java.io :as jio])
(deftype Slurp [filename]
clojure.core.protocols/CollReduce
(coll-reduce [this f1]
(clojure.core.protocols/coll-reduce this f1 (f1)))
(coll-reduce [_ f1 init]
(with-open [#^java.io.Reader r
(apply jio/reader filename nil)]
(loop [ret init
Type Error (user:1:5) Polymorphic function clojure.core/merge could not be applied to arguments:
Polymorphic Variables:
k36143
v36144
Domains:
nil *
(clojure.lang.IPersistentMap k v) (clojure.lang.IPersistentMap k v) *
(Option (clojure.lang.IPersistentMap k v)) *
@wagjo
wagjo / gist:8290237
Last active January 2, 2016 10:29
Bug in nrepl?
;; 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
(:gen-class))
(defprotocol P)
@wagjo
wagjo / gist:8436799909af2d77df5e
Created January 18, 2016 12:18
Automatic whitespace cleanup upon save in Emacs
(add-hook 'before-save-hook
(lambda ()
(whitespace-cleanup)
(delete-trailing-whitespace)))