clojure functions 4

14

Click here to load reader

Upload: jackson-dos-santos-olveira

Post on 26-May-2015

461 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Clojure functions 4

Clojure Example Functions

ilegra - LDCBy Jackson dos Santos

Page 2: Clojure functions 4

frequencies

user => (frequencies '(1 2 3))

{1 1, 2 1, 3 1}

Page 3: Clojure functions 4

gensym

user => (gensym "Blastoise")

Blastoise342

user=> (gensym)

G__345

Page 4: Clojure functions 4

memfnuser=> (map (memfn charAt i) ["fred" "ethel" "lucy"] [1 2 3])

(\r \h \y)

user=>(map #(.charAt %1 %2) ["fred" "ethel" "lucy"] [1 2 3])

(\r \h \y)

Page 5: Clojure functions 4

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

(dosync

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

)

)

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

(dosync

(ref-set bank-account (assoc @bank-account :value (+ (get @bank-account :value) value-to-deposit)))

)

(defn bank-transfer[account-to-debit account-to-credit value]

(bank-deposit account-to-credit value)

(bank-withdraw account-to-debit value)

)

Page 6: Clojure functions 4

bank-transfer

(deftest test-bank-transfer (def client1 (ref (struct bank-account "Blastoise" 151))) (def client2 (ref (struct bank-account "Pikachu" 1500))) (bank-transfer client2 client1 132.98M) (is (= 283.98M (get @client1 :value))) (is (= 1367.02M (get @client2 :value))))

Page 7: Clojure functions 4

Java and Clojure Integration

RT.loadResourceScript("cartax.clj");

Var carType = RT.var("cartax", "car");

return carType.get();

Page 8: Clojure functions 4

Java and Clojure Integration

RT.loadResourceScript("cartax.clj");

Var carType = RT.var("cartax", "car");

return carType.get();

Page 9: Clojure functions 4

Java and Clojure Integration

Var structMap = RT.var("clojure.core", "struct-map");

return structMap.invoke(carStruct,

getStructMapKeyVal("owner-name"), ownerName,

getStructMapKeyVal("car-type"), carType,

getStructMapKeyVal("cur-speed"), curSpeed,

getStructMapKeyVal("licence-plate"), licencePlate)

(struct-map car :owner-name “valor” :car-type “valor” :cur-speed valor :licence-plate “valor”)

Page 10: Clojure functions 4

Java and Clojure Integration

try {

Var t = RT.var("cartax", "verify_car_speed");

return t.invoke(carStruct);

} catch (Exception e) {

throw new RuntimeException(e);

}

Page 11: Clojure functions 4

Java and Clojure Integration

try {

RT.loadResourceScript("cartax.clj");

Object car = buildCar(getCarReference(), "Jackson", "Fuca", 101, "AAAA");

Object verifiedCar = verifyCarSpeed(car);

System.out.println(verifiedCar);

} catch (Exception e) {

throw new RuntimeException(e);

}

Page 12: Clojure functions 4

4Clojure Problems Solved

Page 13: Clojure functions 4

4Clojure Problem

Page 14: Clojure functions 4

4Clojure Problem