Skip to content

Instantly share code, notes, and snippets.

@jfacorro
jfacorro / reducers.cljc
Last active June 10, 2020 09:04
Reducers Comparison
(require '[clojure.core.reducers :as r])
(defn wait [millis]
#?(:clj (Thread/sleep millis)
:clje (timer/sleep millis)))
(defmacro times
{:added "1.0"}
[& exprs]
`(do
@jfacorro
jfacorro / ants.cljc
Last active May 13, 2020 09:00
Ant Simulation - Clojure on the BEAM
(ns ants.core)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ant sim ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright (c) 2008 Rich Hickey. All rights reserved.
; The use and distribution terms for this software are covered by the
; Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
; which can be found in the file CPL.TXT at the root of this distribution.
; By using this software in any fashion, you are agreeing to be bound by
; the terms of this license.
; You must not remove this notice, or any other, from this software.
@jfacorro
jfacorro / clojerl.bat
Created June 18, 2019 21:22
bin/clojerl.bat
@echo off
erl -pa "%CD%/_build/default/lib/clojerl/ebin" -s clojerl_cli start -noshell +pc unicode -extra -r
@jfacorro
jfacorro / example.core
Last active May 25, 2019 12:40
Example core file that doesn't load in OTP 22
module 'example' ['f'/1,
'module_info'/0,
'module_info'/1]
attributes []
'f'/1 = fun (_1) ->
case <_1> of
<~{'foo':='foo'}~> when 'true' ->
_1
@jfacorro
jfacorro / vector_comparison.clj
Last active July 3, 2019 06:14
Clojure persistent vector implementation benchmark comparison
(ns vector-comparison)
(defn compare-creation []
(doseq [n [0 100 1000 10000]]
(println "compare-creation with" n)
(let [coll (->erl (range n))
runs 10000]
(simple-benchmark [] (array/from_list coll) runs)
(simple-benchmark [] (clj_vector/new coll) runs))))
@jfacorro
jfacorro / fn-predicate.clj
Last active May 19, 2019 10:29
Clojure on the BEAM: finding a fast and correct implementation for the fn? predicate
(ns fn-pred)
(defn fn?-1
"Returns true if x is either a function"
{:added "1.0"}
[x] (erlang/is_function x))
(defn fn?-2
"Returns true if x is a function"
{:added "1.0"}
@jfacorro
jfacorro / install-picotts.sh
Created February 12, 2018 11:00
Install PicoTTS in CentOS
#!/bin/bash
# Installer for SVOX Pico TTS on non-Debian platforms
# Author: Steven Mirabito <smirabito@csh.rit.edu>
# Check architechure
if [ $(uname -m) == 'x86_64' ]; then
pkgarch="amd64"
else
pkgarch="i386"
@jfacorro
jfacorro / gist:7519d5013545930b98b04abbecd04526
Created October 3, 2017 10:55
Change retention for graphite
find ./ -type f -name '*.wsp' -exec whisper-resize.py --nobackup {} 10s:6h 10min:180d 12h:2y \;
@jfacorro
jfacorro / pattern_list.erl
Last active March 18, 2017 11:52
sys_core_fold generates invalid Core Erlang
Module =
{c_module,[],
{c_literal,[],cerl_eval0},
[{c_var,[],{eval,0}},
{c_var,[],{module_info,0}},
{c_var,[],{module_info,1}}],
[{{c_literal,[],clojure},{c_literal,[],true}}],
[{{c_var,[],{eval,0}},
{c_fun,[],[],
{c_case,[1,{file,[]}],
@jfacorro
jfacorro / loop-let.clj
Last active March 6, 2017 23:24
loop macro, wrapping let
(require '[clojure.walk :as walk])
(walk/macroexpand-all '(loop [[x & xs] xs a 3]))
(let* [G__1249 xs
vec__1250 G__1249
x (clojure.core/nth vec__1250 0 nil)
xs (clojure.core/nthnext vec__1250 1)
a 3]
(loop* [G__1249 G__1249 a a]
(let* [vec__1251 G__1249