Clojure Example Functions

                        ilegra - LDC
By Jackson dos Santos
odd
user =>(odd? 1)
true
odd

The same thing in java
(2 % 1) ? true : false
even
user => (even? 2)
true
even
The same thing in java
(2 % 2) ? true : false
dotimes
user => (dotimes [i 2] (println i))
0
1
2
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));
}
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))
        )
    )
)
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)))
)
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")
)
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)))
)

Clojure functions examples

  • 1.
    Clojure Example Functions ilegra - LDC By Jackson dos Santos
  • 2.
  • 3.
    odd The same thingin java (2 % 1) ? true : false
  • 4.
  • 5.
    even The same thingin java (2 % 2) ? true : false
  • 6.
    dotimes user => (dotimes[i 2] (println i)) 0 1 2
  • 7.
    dotimes The same thingin 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 (defnverify_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 (deftesttest-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))) )