Skip to content

Instantly share code, notes, and snippets.

View alexy's full-sized avatar

Alexy Khrabrov alexy

View GitHub Profile
(defn map-same
"like map, but returns a collection of the same type as the first input collection"
[f & colls]
(let [first-coll (first colls)]
(if (list? first-coll)
(list* (apply map f colls))
(into (empty first-coll) (apply map f colls)))))
user=> (defn audit-ns [ns]
(let [publics (ns-publics ns)]
(map key (remove #(let [m (-> % val meta)] (or (:doc m) (:added m))) publics))))
#'user/audit-ns
user=> (audit-ns (find-ns 'clojure.core))
(chunked-seq? find-protocol-impl chunk-buffer find-protocol-method EMPTY-NODE await1 -reset-methods *allow-unresolved-vars* proxy-call-with-super
munge print-doc *math-context* with-loading-context unquote-splicing chunk-cons chunk-append destructure -cache-protocol-fn print-dup
*use-context-classloader* proxy-name print-ctor chunk-rest method-sig print-method hash-combine chunk definterface unquote primitives-classnames
rational? chunk-first *source-path* *assert* print-special-doc chunk-next print-simple)
;; routes.clj
(ns winston.ui.routes
(:use [clojure.contrib.except :only (throwf)])
(:require [clojure.contrib.string :as str])))
(defn path-for* [routefn route-args]
{:pre [routefn]}
(let [path (-> routefn meta ::http-path)]
(when (not path)
@alexy
alexy / foo.clj
Created July 27, 2010 18:07 — forked from hiredman/foo.clj
(defn sig [x]
(:sig (meta (resolve x))))
(defmulti type-of (comp type first list))
(defmethod type-of :function [thing & _] (sig thing))
(defmethod type-of java.util.List [expr & a]
(conj (map #(type-of % (first a)) (rest expr))
@alexy
alexy / minscalaactors.scala
Created April 12, 2012 21:37 — forked from viktorklang/minscalaactors.scala
Minimalist Scala Actors
©2012 Viktor Klang
object Actor {
import java.util.concurrent.{ConcurrentLinkedQueue, Executor}
import java.util.concurrent.atomic.{AtomicBoolean}
type Behavior = Any => Effect
sealed trait Effect { def getOrElse(old: Behavior): Behavior }
case object Stay extends Effect { def getOrElse(old: Behavior): Behavior = old }
case class Become(like: Behavior) extends Effect { def getOrElse(old: Behavior): Behavior = like }
> runMain ammonite.repl.Repl
[info] Running ammonite.repl.Repl
Loading Ammonite Repl...
@ load.ivy("com.chuusai" %% "shapeless" % "2.1.0")
@ import shapeless._
import shapeless._
@ 1 :: "lol" :: List(1, 2, 3) :: HNil