Skip to content

Instantly share code, notes, and snippets.

View duckyuck's full-sized avatar

Anders Furseth duckyuck

View GitHub Profile
(defn duotone-filter [^java.awt.image.Raster raster]
(let [dest (.createCompatibleWritableRaster raster)
bands (.getNumBands dest)
dest-pixel (int-array bands)
w (.getWidth raster)
h (.getHeight raster)
]
(loop [y 0]
(when (< y h)
(loop [x 0
{:db/id #db/id[:db.part/user]
:db/ident :reset-position-in-scope
:db/doc "Goes through existing positions and sequentializes them"
:db/fn #db/fn {:lang "clojure"
:params [db scope-id scope-attr retracted-eid sorted-attr]
:code (let [children (scope-attr (datomic.api/entity db scope-id))
sorted-children-eids (map :db/id (sort-by sorted-attr children))
without-retracted-eids (filter (partial not= retracted-eid) sorted-children-eids)]
(map-indexed
(fn [idx entity-id]
@duckyuck
duckyuck / gist:6781773
Created October 1, 2013 17:05
Applying middleware to selected routes
(ns composable-compojure.handler
(:use compojure.core)
(:require [compojure.handler :as handler]
[ring.util.response :refer [response]]))
(defn middleware
[handler value]
(fn [request]
(handler (update-in request [:from-middleware] (partial cons value)))))
@duckyuck
duckyuck / gist:4713063
Last active December 12, 2015 04:18
Debug macro
(ns me.andersfurseth.debug
(:use [clojure.walk :only [postwalk]]))
(defn remove-fn-and-splice [fn-name form]
(if (and (list? form)
(= fn-name (first form)))
(apply concat (rest form))
form))
(defmacro print-form [form]
@duckyuck
duckyuck / gist:4229449
Created December 6, 2012 23:40
SEND + MORE = MONEY in core.logic
(run 1 [q]
(fresh [S E N D M O R Y SEND MORE MONEY]
(infd S E N D M O R Y (interval 0 9))
(distinctfd [S E N D M O R Y])
(eqfd
(!= S 0)
(!= M 0)
(= SEND (+ (* S 1000)
@duckyuck
duckyuck / gist:4086841
Created November 16, 2012 12:16
rudimentær implementasjon av 'let' og 'nil-safe let' vha identity og maybe monad
(defmacro domonad [monad [sym expr & more] & body]
(if more
`(~monad ~expr
(fn [~sym] (domonad ~monad ~more ~@body)))
`(~monad ~expr
(fn [~sym] ~@body))))
(defn identity-m [v f] (f v))
(defn maybe-m [v f]
@duckyuck
duckyuck / gist:4086642
Created November 16, 2012 11:38
en veldig basal implementasjon av 'let' ved hjelp av identity monad. lett!
(defn bind [v f] (f v))
(defmacro lett [[sym expr & more] & body]
(if more
`(bind ~expr
(fn [~sym] (lett ~more ~@body)))
`(bind ~expr
(fn [~sym] ~@body))))
; eksempel