Skip to content

Instantly share code, notes, and snippets.

View llasram's full-sized avatar

Marshall Bockrath llasram

View GitHub Profile
(defmacro make-servlet
"Call to generate a servlet class given the class name and a ring handler."
[servlet handler]
(let [servlet (name servlet), prefix (str servlet "-")]
`(do (println "Compiling Servlet" ~servlet)
(gen-class :name ~servlet
:prefix ~prefix
:extends javax.servlet.http.HttpServlet)
(s/defservice ~prefix ~handler))))
@llasram
llasram / logic.clj
Created November 27, 2012 10:58
Secret Santra in core.logic
(ns secret-santa.logic
(:refer-clojure :exclude [==])
(:require [clojure.core.logic :refer :all]))
(defrel cannot-give ^:index p1 ^:index p2)
(fact cannot-give 'adam 'ashley)
(fact cannot-give 'bill 'brandon)
(fact cannot-give 'carl 'cynthia)
@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))
@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 / 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 / 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 / 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 / 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 / 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 / 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)