clojure functions examples

11

Click here to load reader

Upload: jackson-dos-santos-olveira

Post on 26-May-2015

737 views

Category:

Economy & Finance


2 download

TRANSCRIPT

Page 1: Clojure functions examples

Clojure Example Functions

ilegra - LDCBy Jackson dos Santos

Page 2: Clojure functions examples

odd

user =>(odd? 1)

true

Page 3: Clojure functions examples

odd

The same thing in java(2 % 1) ? true : false

Page 4: Clojure functions examples

even

user => (even? 2)

true

Page 5: Clojure functions examples

even

The same thing in java(2 % 2) ? true : false

Page 6: Clojure functions examples

dotimes

user => (dotimes [i 2] (println i))

0

1

2

Page 7: Clojure functions examples

dotimes

The same thing in javaVector v = new Vector();

v.add(0);

v.add(1);

v.add(2);

for (int i = 0; i < v.size(); i++) {

System.out.println(v.get(i));

}

Page 8: Clojure functions examples

Car tax function

(defn verify_car_speed [car]

(if (> 100 (get car :cur-speed)) true

(do

(def extraTax (* (- (get car :cur-speed) 100) 20))

(assoc car :tax (+ extraTax 10))

)

)

)

Page 9: Clojure functions examples

Car tax tests

(deftest test-car-speed-with-less-than-100

(def carToTest (struct car "FUCA" "PASSANGER" 99 1))

(def carReturned (verify_car_speed carToTest))

(is (= nil (get carReturned :tax)))

)

(deftest test-car-speed-with-more-than-100

(def carToTest (struct car "FUCA" "PASSANGER" 101 1))

(def carReturned (verify_car_speed carToTest))

(is (= 30 (get carReturned :tax)))

)

Page 10: Clojure functions examples

Bank functions

(defn bank-deposit [bank-account value-to-deposit]

(def value-to-credit (+ (get @bank-account :value) value-to-deposit))

(dosync

(ref-set bank-account (assoc @bank-account :value value-to-credit))

)

)

(defn bank-withdraw[bank-account value-to-withdraw]

(def value-to-dec (- (get @bank-account :value) value-to-withdraw))

(dosync

(ref-set bank-account (assoc @bank-account :value value-to-dec))

)

)

(defn bank-assesment[bank-account]

(str "Client " (get @bank-account :name)" has " (get @bank-account :value) " in his account")

)

Page 11: Clojure functions examples

Bank tests

(deftest test-deposit-100

(def client-rich (ref (struct bank-account "Eike Batista" 100.02M)))

(bank-deposit client-rich 100)

(is (= 200.02 (get @client-rich :value)))

)

(deftest test-withdraw-99.03

(def client-poor (ref (struct bank-account "Jackson" 224.07M)))

(bank-withdraw client-poor 99.03M)

(is (= 125.04 (get @client-poor :value)))

)

(deftest test-assesment

(def rich-client (ref (struct bank-account "Silvio Santos" 1000)))

(bank-deposit rich-client 100)

(is (= "Client Silvio Santos has 1100 in his account" (bank-assesment rich-client)))

)