cd dev/lib/clojure-1.1.0 java -cp .:clojure.jar:jline-0.9.94.jar jline.ConsoleRunner clojure.main
user=> (def r 5) #'user/r user=> r 5 user=> (+ r 3) 8 user=> (def clojure 'lisp) #'user/clojure user=> clojure lisp user=> (def s [5 6 7]) #'user/s user=> s [5 6 7] user=> (first s) 5 user=> (rest s) (6 7) user=> (def t {"a" 1 "b" 2 "c" 3}) #'user/t user=> (get t "a") 1 user=> (first t) ["a" 1] user=> (def u {:a 1 :b 2 :c 3}) #'user/u user=> (get u :a) 1 user=> (let [x 2] (+ x 8)) 10 user=> (new BigDecimal 10) 10M user=> (new BigDecimal 1) 1M user=> (new File "temp.clj") java.lang.IllegalArgumentException: Unable to resolve classname: File (NO_SOURCE_FILE:61) user=> (import 'java.io.File) java.io.File user=> (new File "temp.clj") #<File temp.clj> user=> (def y ["one" "two"]) #'user/y user=> (def z (cons "zero" y)) #'user/z user=> z ("zero" "one" "two") user=> (cons "zero" ("one" "two")) java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0) user=> (cons "zero" '("one" "two")) ("zero" "one" "two") user=> (nth z 2) "two" user=> (new java.util.HashMap {"one" 1 "two" 2 "three" 3}) #user=> (java.util.HashMap. {"one" 1 "two" 2 "three" 3}) # (def cars ['Ford 'Chevy 'Dodge]) #'user/cars user=> (rest cars) (Chevy Dodge) user=> (first cars) Ford user=> (first (rest cars)) Chevy user=> (def broken (first (rest cars))) #'user/broken user=> broken Chevy user=> (def cars (cons 'GMC cars)) #'user/cars user=> cars (GMC Ford Chevy Dodge) user=> (def stooges (sorted-set 'larry 'mo 'curly)) #'user/stooges user=> stooges #{curly larry mo} user=> (first stooges) curly user=> (rest stooges) (larry mo) user=> (def stooges (sorted-map :a 'larry :b 'mo :c 'curly)) #'user/stooges user=> (stooges :a) larry user=>
Function Definition
(defn function-name doc-string? attr-map? [parameter-list](expressions))
user=> (defn add [a b] (+ a b)) #'user/add user=> (add 1 2) 3 user=> (defn biggerthanabreadbox? [thing] (> thing 3)) #'user/biggerthanabreadbox? user=> (biggerthanabreadbox? 5) true user=> (biggerthanabreadbox? 1) false user=> (defn total-cost [price quantity] (* price quantity)) #'user/total-cost user=> (total-cost 3 2) 6
More Examples
user=> (defstruct book :title :author) #'user/book user=> (def b struct) #'user/b user=> (def b (struct book "Alice in Wonderland" "Lewis Carroll")) #'user/b user=> (:title b) "Alice in Wonderland" user=> (defmulti prt class) #'user/prt user=> (defmethod prt String [s] (.write *out* s)) #user=> (prt "Clojure is Cool!") Clojure is Cool!nil user=> (derive ::bronze ::basic) nil user=> (derive ::silver ::basic) nil user=> (derive ::gold ::premier) nil user=> (derive ::platinum ::premier) nil user=> (isa? ::bronze ::premier) false user=> (isa? ::gold ::premier) true