Skip to content

Instantly share code, notes, and snippets.

View DanielJomphe's full-sized avatar

Daniel Jomphe DanielJomphe

View GitHub Profile
(defproject parser-vuln-test "1.0" :dependencies [[org.clojure/clojure "1.6.0"]])
(doseq [n (all-ns)
[_ v] (ns-map n)
:when (and (var? v) (fn? @v))]
(alter-var-root v (fn [original]
(fn [& args]
(try (apply original args)
(catch Exception _))))))
@reborg
reborg / clojure-irc-pdf-links
Last active July 16, 2017 15:18
PDF Links #Clojure IRC
@cgrand
cgrand / transmogrify.clj
Last active August 29, 2015 14:18
transmogrify->> rewrites last-threaded forms to use transducers.
(defmulti transmogrify
"Rewrites the last form of a thread-last to use transducer (if possible)."
(fn [f xform src & args] f))
(defmacro transmogrify->>
"Like ->> but uses transducers"
([x] x)
([src & xs]
(let [end (last xs)
xforms (butlast xs)
@jlongster
jlongster / forms-with-react.js
Last active May 8, 2017 14:15
higher-order form components w/react
// Simple wrapper to use bootstrap's grid system to position elements side-by-side
var VerticalFieldsElement = React.createClass({
render: function() {
return dom.div(
{ className: 'clearfix' },
React.Children.map(this.props.children, function(child) {
if(!child) {
return child;
}
@cgrand
cgrand / all.tsv
Last active August 29, 2015 14:24
kvbitmap vs master
We can make this file beautiful and searchable if this error is corrected: It looks like row 5 should actually have 1 column, instead of 6 in line 4.
PersistentHashMap benchmark: kvbitmap vs master
results are kvbitmap runtime / master runtime
below 100% kvbitmap is faster
above 100% master is faster
size assoc! assoc get dissoc dissoc!
16 84,64% 91,21% 96,56% 99,84% 89,91%
64 80,12% 91,66% 98,66% 104,97% 92,78%
256 89,37% 99,33% 97,59% 111,69% 98,20%
@jlongster
jlongster / immutable-libraries.md
Last active February 26, 2026 10:29
List of immutable libraries

A lot of people mentioned other immutable JS libraries after reading my post. I thought it would be good to make a list of available ones.

There are two types of immutable libraries: simple helpers for copying JavaScript objects, and actual persistent data structure implementations. My post generally analyzed the tradeoffs between both kinds of libraries and everything applies to the below libraries in either category.

Libraries are sorted by github popularity.

Persistent Data Structures w/structural sharing

@jasongilman
jasongilman / atom_clojure_setup.md
Last active October 28, 2025 22:34
This describes how I setup Atom for Clojure Development.

Atom Clojure Setup

This describes how I setup Atom for an ideal Clojure development workflow. This fixes indentation on newlines, handles parentheses, etc. The keybinding settings for enter (in keymap.cson) are important to get proper newlines with indentation at the right level. There are other helpers in init.coffee and keymap.cson that are useful for cutting, copying, pasting, deleting, and indenting Lisp expressions.

Install Atom

Download Atom

The Atom documentation is excellent. It's highly worth reading the flight manual.

@reborg
reborg / rich-already-answered-that.md
Last active June 29, 2026 06:10
A curated collection of answers that Rich gave throughout the history of Clojure

Rich Already Answered That!

A list of commonly asked questions, design decisions, reasons why Clojure is the way it is as they were answered directly by Rich (even when from many years ago, those answers are pretty much valid today!). Feel free to point friends and colleagues here next time they ask (again). Answers are pasted verbatim (I've made small adjustments for readibility, but never changed a sentence) from mailing lists, articles, chats.

How to use:

  • The link in the table of content jumps at the copy of the answer on this page.
  • The link on the answer itself points back at the original post.

Table of Content

;; try this form-by-form at a REPL
(require '[clojure.spec.alpha :as s])
;; create an inline DSL to describe the FizzBuzz world
(defmacro divides-by
[nm n]
`(s/def ~nm (s/and pos-int? #(zero? (mod % ~n)))))
;; specify FizzBuzz
(divides-by ::fizz 3)