Basics28. (first [1 2 3])
; => 1
(first '(1 2 3))
; => 1
(first #{1 2 3})
29. (first [1 2 3])
; => 1
(first '(1 2 3))
; => 1
(first #{1 2 3})
; => 2
30. (first [1 2 3])
; => 1
(first '(1 2 3))
; => 1
(first #{1 2 3})
; => 2
(first {:one 1 :two 2})
31. (first [1 2 3])
; => 1
(first '(1 2 3))
; => 1
(first #{1 2 3})
; => 2
(first {:one 1 :two 2})
; => [:two 2]
52. AUTOMATED TESTS
(fact (split "a/b/c" #"/")
=> ["a" "b" "c"])
(tabular
(fact "The rules of Conway's life"
(alive? ?cell-status ?neighbor-count) => ?expected)
?cell-status
:alive
:alive
:alive
:alive
?neighbor-count
1
2
3
4
?expected
false
true
true
false
:dead
:dead
:dead
2
3
4
false
true
false)
53. SQL
(defdb prod
(postgres {:db "korma"
:user "db"
:password "dbpass"}))
(defentity address)
(defentity user
(has-one address))
(select user
(with address)
(fields :firstName :lastName :address.state)
(where {:email "korma@sqlkorma.com"}))
55. XML PARSING
(ns examples.xml
(:use clojure.xml)
(:import java.io.File))
(def xml-doc
(parse (File. "calendar.xml")))
(get-in xml-doc [:content 1 :content 0 :content])
=> [“Rover’s birthday”]
59. GUI
(ns seesaw.test.examples.slider
(:use [seesaw core color border] seesaw.test.examples.example))
(defn make-frame []
(frame
:title "Slider Example"
:content
(horizontal-panel :items [
(vertical-panel :items [
"<html>Slide the sliders to change<br>the color to the right</html>"
(slider :id :red
:min 0 :max 255)
(slider :id :green :min 0 :max 255)
(slider :id :blue :min 0 :max 255)])
(canvas :id :canvas :border (line-border) :size [200 :by 200])])))
(defn update-color [root]
(let [{:keys [red green blue]} (value root)]
(config! (select root [:#canvas]) :background (color red green blue))))
(defexample []
(let [root (make-frame)]
(listen (map #(select root [%]) [:#red :#green :#blue]) :change
(fn [e] (update-color root)))
root))
61. number = 1
while number < 20
if number % 3 == 0 && number % 5 == 0
puts "fizzbuzz"
elsif number % 3 == 0
puts "fizz"
elsif number % 5 == 0
puts "buzz"
else
puts number
end
number = number + 1
end
62. for number in 1..20
if number % 3 == 0 && number % 5 == 0
puts "fizzbuzz"
elsif number % 3 == 0
puts "fizz"
elsif number % 5 == 0
puts "buzz"
else
puts number
end
end
63. numbers = (0..20).map do |number|
if number % 3 == 0 && number % 5 == 0
"fizzbuzz"
elsif number % 3 == 0
"fizz"
elsif number % 5 == 0
"buzz"
else
number
end
end
puts numbers
64. (defn divisible-by? [divisor number]
(= 0 (mod number divisor)))
(defn fizz-buzzify [number]
(cond
(divisible-by? 15 number) "fizzbuzz"
(divisible-by? 3 number) "fizz"
(divisible-by? 5 number) "buzz"
:else number))
(def fizz-buzz (map fizz-buzzify (range)))
(mapv println (take 100 fizz-buzz))