Skip to content

Instantly share code, notes, and snippets.


Kevin Downey hiredman

View GitHub Profile
hiredman / foo.clj
Created Feb 2, 2019
reflection boxing
View foo.clj
(as-> clojure.lang.RT %
(.getDeclaredField % "checkSpecAsserts")
(doto % (.setAccessible true))
(.get % nil)
(doto % prn)
(if % :a :b))
View deployer.clj
(ns deployer
(:require [ :as deps]
[ :as reader]
[ :as io]
[clojure.string :as string])
(:import ( MessageDigest)
(com.jcraft.jsch JSch)
( URI)))
(def hex-alphabet (vec "0123456789ABCDEF"))
View substitution model.clj
(defn inc-more [nums]
(if (first nums)
(cons (inc (first nums))
(inc-more (rest nums)))
(inc-more [1 2])
(if (first [1 2])
(cons (inc (first [1 2]))
hiredman / tco.txt
Created Jul 19, 2018
irc log about tail calls in clojure
View tco.txt
2018:Jun:01:23:25:15< hiredman> the tail is the same in clojure and in scheme, but in scheme because tail calls look no
different from regular calls, and most of the time when testing you won't be using inputs large enough to exhaust your stack, you can easily be mistaken about when and where tco is happening
2018:Jun:01:23:26:03< hiredman> that function is not tail recursive, so no tco
2018:Jun:01:23:27:48< jaawerth> jjman: to clarify, for that to be a tail call, the add1* would have to wrap the other stuff rather than the other way around
2018:Jun:01:23:27:57< jjman> so how does racket does it if it is no tco? it let you grows your stack to all your available memory?
2018:Jun:01:23:28:11< hiredman> or until you hit some limit
2018:Jun:01:23:28:42< hiredman> I wouldn't be surprised if dr racket had some fancy gizmo to hilight non-tail recursive calls
2018:Jun:01:23:29:23< loli> racket has proper tail calls
2018:Jun:01:23:29:40< hiredman> no one said it didn't
2018:Jun:01:23:29:41< loli> often one builds a c
View foo.clj
(defn optionFourWorkOut []
(println "Enter user name")
(let [use-input (read-line)
user-name-id (first
(for [x (range @customer-size)
:while (= (compare user-input (get (get customer-list x) 1)) 0)]
(get (get customer-list x) 0)))
user-product-id-and-quantity (vec (for [y (range @sales-size)
:while (= (compare user-name-id (get (get sales-list y) 1)) 0)]
View foo.scm
(define (add1* l)
(let ((x (empty? l)))
(if x
(let ((m (first l))
(y (add1 m))
(n (rest l))
(z (add1* n)))
(cons y z)))))
View aws-actions.clj
#_ (
true;exec java -jar /home/kevin/.m2/repository/org/clojure/clojure/1.7.0/clojure-1.7.0.jar $0
(let [pom-uber-jar (str ""
(.addURL @clojure.lang.Compiler/LOADER ( pom-uber-jar))
(require '[cemerick.pomegranate :as pom])
View gist:9e3bb3eea02b33cff49d9fe74051af86
∵ dallben /tmp ∴ git clone ~/src/alacritty/
git clone ~/src/alacritty/
Cloning into 'alacritty'...
∵ dallben /tmp ∴ cd alacritty/
cd alacritty/
∵ dallben /tmp/alacritty ∴ git log --oneline | head -10
git log --oneline | head -10
03f9e0c Add install instructions via cargo --git
dddf664 Add info about default configuration for macOS
View gist:b8e6ce7392e6ba56576fb14f8e8b7712
user=> (s/valid? even? "42")
IllegalArgumentException Argument must be an integer: 42 clojure.core/even? (core.clj:1383)
user=> (pst)
IllegalArgumentException Argument must be an integer: 42
clojure.core/even? (core.clj:1383)
clojure.core/even? (core.clj:1378)
clojure.spec.alpha/spec-impl/reify--1987 (alpha.clj:875)
clojure.spec.alpha/valid? (alpha.clj:755)
clojure.spec.alpha/valid? (alpha.clj:751)
user/eval17 (NO_SOURCE_FILE:5)
View scratch.clj
(require '[clojure.set :as set])
(def info
[{:year 2017
:month 4
:data "x"}
{:year 2017
:month 4
:data "y"}
You can’t perform that action at this time.