More Related Content Similar to Clojure functions examples (20) More from Jackson dos Santos Olveira (20) Clojure functions examples7. dotimes
The same thing in java
Vector 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));
}
8. 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))
)
)
)
9. 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)))
)
10. 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")
)
11. 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)))
)