Weitere ähnliche Inhalte
Ähnlich wie Clojure Example Functions: frequencies, gensym, memfn, bank-transfer
Ähnlich wie Clojure Example Functions: frequencies, gensym, memfn, bank-transfer (20)
Mehr von Jackson dos Santos Olveira
Mehr von Jackson dos Santos Olveira (20)
Kürzlich hochgeladen (20)
Clojure Example Functions: frequencies, gensym, memfn, bank-transfer
- 4. memfn
user=> (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)
- 5. 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)
)
- 6. 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)))
)
- 7. Java and Clojure Integration
RT.loadResourceScript("cartax.clj");
Var carType = RT.var("cartax", "car");
return carType.get();
- 8. Java and Clojure Integration
RT.loadResourceScript("cartax.clj");
Var carType = RT.var("cartax", "car");
return carType.get();
- 9. 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”)
- 10. Java and Clojure Integration
try {
Var t = RT.var("cartax", "verify_car_speed");
return t.invoke(carStruct);
} catch (Exception e) {
throw new RuntimeException(e);
}
- 11. 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);
}