Skip to content

Instantly share code, notes, and snippets.

View llasram's full-sized avatar

Marshall Bockrath llasram

View GitHub Profile
@llasram
llasram / mmo.clj
Created November 18, 2013 10:48
Example of using Parkour with multiple outputs from a map-only job.
(ns parkour.examples.mmo
"Where `mmo` stands for Multiple Map Output."
(:require [clojure.string :as str]
[clojure.core.reducers :as r]
[parkour (conf :as conf) (fs :as fs) (wrapper :as w)
(mapreduce :as mr) (graph :as pg) (tool :as tool)]
[parkour.io (dseq :as dseq) (text :as text) (dux :as dux)]
[parkour.util :refer [returning]]))
(defn ->prefix
@llasram
llasram / uu-precalc.clj
Created October 21, 2013 08:59
LensKit precalculation dependency-injection structure.
(ns ...
(:import [clojure.lang IDeref]
...)
(definterface UUPrecalc)
(defprovider uu-precalc
^UUPrecalc [^UserDAO udao, ^UserEventDAO uedao]
(let [data ...]
(reify UUPrecalc IDeref (deref [_] data))))
@llasram
llasram / multimethod-groups.clj
Created September 30, 2013 19:35
multimethod groups
(defmacro defmulti-group
"Define a group of related multimethods."
[& forms] `(do ~@(map #(cons 'defmulti %) forms)))
(defmacro defmethod-group
"Implement a group of related multimethods sharing common dispatch values."
[& specs]
(letfn [(parse-impls [specs]
(lazy-seq
(when (seq specs)
@llasram
llasram / ropasc.core.clj
Created September 27, 2013 01:06
Rock, Paper, Scissors, as expressed in `clara-rules`
(ns ropasc.core
(:refer-clojure :exclude [==])
(:require [clara.rules :as cr :refer [defrule defquery ==]]))
(defrecord Action [player choice])
(defrecord Victory [winner loser])
(defrecord Tie [player1 player2])
@llasram
llasram / core.clj
Last active December 22, 2015 12:28
lenskit-hello
(ns lenskit-hello.core
(:require [clojure.java.io :as io])
(:import [org.grouplens.lenskit
ItemRecommender ItemScorer Recommender RecommenderBuildException]
[org.grouplens.lenskit.baseline
BaselineScorer ItemMeanRatingItemScorer UserMeanBaseline
UserMeanItemScorer]
[org.grouplens.lenskit.core
LenskitConfiguration LenskitRecommender]
[org.grouplens.lenskit.cursors Cursors]
@llasram
llasram / package-lein.sh
Created August 6, 2013 20:49
Package Leiningen via fpm
#! /bin/bash -e
PACKAGE=leiningen
VERSION=2.1.2
ITERATION=1
DEBVERSION=${VERSION}+dbla.${ITERATION}
BINDIR=/opt/damballa/bin
LIBDIR=/opt/damballa/lib/leiningen
@llasram
llasram / mean-sd.clj
Last active July 30, 2017 17:38 — forked from timvisher/-
(defn ^:private mean-sd-step
[[n m s] ^double x]
(let [n (long n), m (double m), s (double s)
n (inc n), d (- x m), m (+ m (/ d n)), s (+ s (* d (- x m)))]
[n m s]))
(defn mean-sd
"Calculate mean and (sample) standard-deviation of `vals`."
[vals]
(let [[n m s] (reduce mean-sd-step [0 0.0 0.0] vals)]
@llasram
llasram / core.clj
Created December 9, 2012 18:07
bench/core.clj
(ns bench.core
(:require [criterium [core :as c]]))
(def
^{:arglists '([coll x] [coll x & xs])
:doc "conj[oin]. Returns a new collection with the xs
'added'. (conj nil item) returns (item). The 'addition' may
happen at different 'places' depending on the concrete type."
:added "1.0"
:static true}
@llasram
llasram / init-fragment.el
Created December 7, 2012 02:18
Fixing xterm terminal emacs M-up -> A
;; Extra xterm bindings
(require 'xterm)
(define-key xterm-function-map "\e[1;9A" [M-up])
(define-key xterm-function-map "\e[1;9B" [M-down])
(define-key xterm-function-map "\e[1;9C" [M-right])
(define-key xterm-function-map "\e[1;9D" [M-left])
(define-key xterm-function-map "\e[1;9F" [M-end])
(define-key xterm-function-map "\e[1;9H" [M-home])
@llasram
llasram / euler19.clj
Created December 6, 2012 18:48
Project Euler problem 19 solution
(defn p19-solution []
(let [multiple? #(zero? (rem %1 %2))
leap-year? #(or (and (multiple? % 4)
(not (multiple? % 100)))
(multiple? % 400))
february #(if (leap-year? %) 29 28)
mdays [31 28 31 30 31 30 31 31 30 31 30 31]
mdays (map #(constantly %) mdays)
mdays (apply juxt (assoc (vec mdays) 1 february))
months (mapcat mdays (range 1901 2001))