Clojure A Whirlwind Tour Alan Dipert, @alandipert Justin Kramer, @jkkramer
Clojure is... A Lisp dialect
Functional
Tightly integrated with Java/C#
Dynamic
Built for concurrency
Two years old, at version 1.1
Clojure's 4 Pitches Lisp
Functional programming
Java/C# interoperability
Language-level state support
Why Lisp? Little syntax to learn
Say a lot with a little.  Less code, fewer bugs
Flexible, it becomes what you want
Code is data, “homoiconic”
 
Clojure Data Simple Data Compound Data \a “ house” 42 [1 2 3 4] true (true false true) :fname {:fname “Alan” :lname “Dipert} 7/8 #{“bar” “camp” “rules”}
Expressions 34 34 (+ 1 2) 1 + 2 (println (str “The date is ” (new Date))) println(str(“The date is”, new Date)) (def X 7) X = 7 (< 7 8 9) (7 < 8) && (8 < 9) (if (< X 8) “less than 8” “at least 8”) X < 8 ? “less than 8” : “at least 8”
Evaluation and the REPL Enter one command at a time
Experimental programming and one-offs
Functional Programming A programming paradigm, set of language features
Functions can be created dynamically
Functions can be stored just like other values, are “first class”

Clojure

Editor's Notes

  • #4 Give credit to halloway
  • #9 Explain REPL Talke about write/compile/test cycle and experiental programming