Skip to content

Instantly share code, notes, and snippets.

@Jared314
Jared314 / async1.clj
Created July 20, 2013 02:46
Clojure core.async example 1
(ns async1
(:require [clojure.core.async :as async]))
(defn alice [c]
(async/>!! c "Carol Carolson's House @ 10pm"))
(defn bob [c]
(async/go (println "Bob received: " (async/<! c))))
(let [phonenumber-555-555-9292 (async/chan)]
@Jared314
Jared314 / async2.clj
Created July 21, 2013 04:33
Clojure core.async example 2
(ns async2
(:require [clojure.core.async :as async]
[clojure.core.async.lab :as lab]))
(defn make-fb-group [& members]
(apply lab/broadcast members))
(defn alice [c]
(async/>!! c "Dave Davenson's House @ 10pm"))
@Jared314
Jared314 / async3.clj
Last active December 20, 2015 01:18
Clojure core.async example 3
(ns async3
(:require [clojure.core.async :as async]))
(defn alice [c message]
(async/>!! c message))
(defn person [name c]
(async/go
(let [message (async/<! c)]
(println name " received: " message)
@Jared314
Jared314 / async4.clj
Last active December 20, 2015 01:19
Clojure core.async example 4
(ns async4
(:require [clojure.core.async :as async]
[clojure.core.async.lab :as lab]))
(defn inmate [name c]
(async/go
(async/<! c)
(println name " released")))
(def alice (partial inmate "Alice"))
@Jared314
Jared314 / ohm.clj
Last active December 20, 2015 14:09
(ns ohm
(:require [clojure.string :as string]
[clojure.java.io :refer [as-file]])
(:import [java.io File]))
(defrecord Leaf [nss declares fns])
(defn parse-value [value]
value)
@Jared314
Jared314 / TreeIterator.clj
Last active December 22, 2015 04:39
Improving the Clojure-Git Interface with a Nice Facade
(ns gitter.TreeIterator
(:import [org.eclipse.jgit.lib Repository FileMode]
[org.eclipse.jgit.treewalk WorkingTreeIterator WorkingTreeIterator$Entry WorkingTreeOptions]
[java.io ByteArrayInputStream])
(:gen-class :extends org.eclipse.jgit.treewalk.WorkingTreeIterator
:init init2
:post-init postinit
:state state
:constructors {[org.eclipse.jgit.lib.Repository Object] [org.eclipse.jgit.treewalk.WorkingTreeOptions]
[org.eclipse.jgit.lib.Repository Object org.eclipse.jgit.treewalk.WorkingTreeIterator] [org.eclipse.jgit.treewalk.WorkingTreeIterator]}))
@Jared314
Jared314 / remove-node.clj
Last active December 23, 2015 10:08
Remove nodes
(require '[net.cgrand.enlive-html :as e])
(defn gen-transform [target]
[[(cond
(string? target) e/text-node
(map? target) (:tag target)
:else e/any-node)]
#(when (not= target %) %)])
(defn remove-node [coll & nodes]
(ns stuff
(:require [instaparse.core :as insta]
[clojure.walk :as walk]))
(defn hiccup->sexp [sym-ns data]
(let [sym-ns-fn #(symbol sym-ns %)]
(walk/postwalk (fn [x] (if (and (vector? x) (keyword? (first x)))
(conj (rest x) (-> x first name sym-ns-fn))
x))
data)))
@Jared314
Jared314 / consec-product.clj
Created October 26, 2013 19:35
Project Euler #8: Find the greatest product, of 5 consecutive digits, in a string
(def data (str "37900490610897696126265185408732594047834333441947"
"01850393807417064181700348379116686008018966949867"
"75587222482716536850061657037580780205386629145841"
"06964490601037178417735301109842904952970798120105"
"47016802197685547844962006690576894353336688823830"
"22913337214734911490555218134123051689058329294117"
"83011983450277211542535458190375258738804563705619"
"55277740874464155295278944953199015261800156422805"
"72771774460964310684699893055144451845092626359982"
"79063901081322647763278370447051079759349248247518"))
@Jared314
Jared314 / markov-chain.clj
Last active December 31, 2015 11:59
Clojure Markov Chain Example
(ns markov-chain
(:require [clojure.string :as string]))
(defn simple-weighted-rand-nth [m]
(let [ks (keys m)
vs (map m ks) ; Ensure map value ordering
ranges (reductions + vs)
x (rand-int (last ranges))
i (count (take-while #(<= % x) ranges))
k (nth ks i)]