Skip to content

Instantly share code, notes, and snippets.

View number23's full-sized avatar
🎯
Focusing

number23 number23

🎯
Focusing
View GitHub Profile
@number23
number23 / equal.clj
Created May 11, 2012 17:15
clojure equal on list and vector
user=> (type [])
clojure.lang.PersistentVector
user=> (type '())
clojure.lang.PersistentList$EmptyList
user=> (type [1])
clojure.lang.PersistentVector
user=> (type '(1))
clojure.lang.PersistentList
user=> (= [] '())
true
@number23
number23 / memoization.clj
Created May 11, 2012 15:39
clojure memoization
(defn prime? [n]
(cond
(== 1 n) false
(== 2 n) true
(even? n) false
:else (->> (range 3 (inc (Math/sqrt n)) 2)
(filter #(zero? (rem n %))) empty?)))
(time (prime? 1125899906842679))
; "Elapsed time: 2181.014 msecs"
@number23
number23 / quote.clj
Created May 10, 2012 14:17
clojure quote special form
'x
;= x
'(+ x x)
;= (+ x x)
(list? '(+ x x))
;= true
(list '+ 'x 'x)
@number23
number23 / numeric.txt
Created May 10, 2012 08:43
Clojure numeric literals
Literal syntax Numeric type
42, 0xff, 2r111, 040 long (64-bit signed integer)
3.14, 6.0221415e23 double (64-bit IEEE floating point decimal)
42N clojure.lang.BigInt (arbitrary-precision integera)
0.01M java.math.BigDecimal (arbitrary-precision signed floating point decimal)
22/7 clojure.lang.Ratio
@number23
number23 / try.clj
Created May 9, 2012 16:02
clojure try and catch
user=> (try (/ 1 0) true (catch Exception e false))
false
user=> (try (/ 1 1) true (catch Exception e false))
true
@number23
number23 / -main.clj
Created May 9, 2012 09:06
clojure -main func
Shell:~ >: cat t.clj
(ns t)
(defn -main [& args]
(println "Hello world"))
Shell:~ >: java -cp ".:.clojure/clojure.jar" clojure.main -m t
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Hello world
Shell:~ >:
@number23
number23 / inspect.clj
Created May 8, 2012 09:37
clojure inspect
(use '[clojure.inspector :only (inspect inspect-tree)])
(inspect-tree (System/getProperties))
(inspect-tree {:clojure {:creator "Rich" :runs-on-jvm true}})
@number23
number23 / for.clj
Last active October 4, 2015 11:27
clojure for List comprehension
user=> (for [file "ABCDEFGH" rank (range 1 9)] (format "%c%d" file rank))
("A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "D1" "D2" "D3" "D4" "D5" "D6" "D7" "D8" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "F1" "F2" "F3" "F4" "F5" "F6" "F7" "F8" "G1" "G2" "G3" "G4" "G5" "G6" "G7" "G8" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8")
user=> (for [rank (range 1 9) file "ABCDEFGH"] (format "%c%d" file rank))
("A1" "B1" "C1" "D1" "E1" "F1" "G1" "H1" "A2" "B2" "C2" "D2" "E2" "F2" "G2" "H2" "A3" "B3" "C3" "D3" "E3" "F3" "G3" "H3" "A4" "B4" "C4" "D4" "E4" "F4" "G4" "H4" "A5" "B5" "C5" "D5" "E5" "F5" "G5" "H5" "A6" "B6" "C6" "D6" "E6" "F6" "G6" "H6" "A7" "B7" "C7" "D7" "E7" "F7" "G7" "H7" "A8" "B8" "C8" "D8" "E8" "F8" "G8" "H8")
from: http://stackoverflow.com/questions/10966142/what-is-the-difference-between-while-and-when-in-clojure
:when iterates over the bindings, but only evaluates the body of the loop when the condition is true.
:while iterates ov
@number23
number23 / trampoline.clj
Created April 27, 2012 09:36
trampoline.clj
(declare my-odd? my-even?)
(defn my-odd? [n]
(if (= n 0)
false
#(my-even? (dec n))))
(defn my-even? [n]
(if (= n 0)
true
@number23
number23 / backup.sh
Created March 16, 2012 09:03
linux system backup script
#!/bin/sh
echo "SYSTEM Backup start at `date`!"
cd /
tar -czpf - --exclude=/proc \
--exclude=/sys \
--exclude=/mnt \
--exclude=/media \
--exclude=/dev \