Advanced Advanced Aluminium Aluminium Technology Technology.
Advanced
-
Upload
logan-campbell -
Category
Technology
-
view
99 -
download
2
description
Transcript of Advanced
![Page 1: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/1.jpg)
CLOJURE WORKSHOP
![Page 2: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/2.jpg)
RECURSION
![Page 3: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/3.jpg)
(defn length ([collection] (length collection 0)) ([collection accumulator] (if (empty? collection) accumulator (recur (rest collection) (inc accumulator)))))
![Page 4: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/4.jpg)
(loop [x 10] (when (> x 1) (println x) (recur (- x 2))))
![Page 5: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/5.jpg)
SEQUENCE PROCESSING
![Page 6: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/6.jpg)
(defn balance ([string] (balance 0 (seq string))) ([count [head & tail :as chars]] (if (not (empty? chars)) (case head \( (recur (inc count) tail) \) (if (zero? count) false (recur (dec count) tail)) (recur count tail)) true)))
RECURSIVE
![Page 7: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/7.jpg)
(defn-‐match balance ([?string] (balance 0 (seq string))) ([_ [] ] true) ([?count [\( & ?tail]] (balance (inc count) tail)) ([0 [\) & _] ] false) ([?count [\) & ?tail]] (balance (dec count) tail)) ([?count [_ & ?tail]] (balance count tail)))
PATTERN MATCHING
![Page 8: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/8.jpg)
(defn balance [string] (-‐>> string seq (map {\( inc \) dec}) (filter identity) (reductions #(%2 %1) 0) (filter neg?) empty?))
SEQUENCE PROCESSING
![Page 9: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/9.jpg)
PROTOCOLS
![Page 10: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/10.jpg)
(defrecord CartesianCoordinate [x y])
![Page 11: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/11.jpg)
(defrecord PolarCoordinate [distance angle])
![Page 12: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/12.jpg)
(defprotocol Moveable (move-‐north [self amount]) (move-‐east [self amount]))
![Page 13: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/13.jpg)
(extend-‐type CartesianCoordinate
Moveable
(move-‐north [{x :x y :y} ammount] (CartesianCoordinate. (+ x ammount) y))
(move-‐east [{x :x y :y} ammount] (CartesianCoordinate. x (+ y ammount))))
![Page 14: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/14.jpg)
(defrecord CenterPointRectangle [center-‐point width height])
![Page 15: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/15.jpg)
(defrecord CornerPointRectangle [top-‐left bottom-‐right])
![Page 16: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/16.jpg)
(extend-‐type CenterPointRectangle Moveable
(move-‐north [self ammount] (update-‐in self [:center-‐point] #(move-‐x % ammount)))
(move-‐east [self ammount] (update-‐in self [:center-‐point] #(move-‐y % ammount))))
![Page 17: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/17.jpg)
MACROS
![Page 18: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/18.jpg)
'(println "Hello, World")
![Page 19: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/19.jpg)
=> (println "Hello, World")'(println "Hello, World")
![Page 20: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/20.jpg)
(first )'(println "Hello, World")
![Page 21: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/21.jpg)
(first )'(println "Hello, World")=> println
![Page 22: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/22.jpg)
function-name(def )'(println "Hello, World")(first )
(list function-name "Goodbye, Cruel World")
![Page 23: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/23.jpg)
function-name(def )'(println "Hello, World")(first )
(list function-name "Goodbye, Cruel World")=> (println "Goodbye, Cruel World")
![Page 24: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/24.jpg)
function-name(def )
(def new-code ) (eval new-code)
(first )'(println "Hello, World")
(list function-name "Goodbye, Cruel World")
![Page 25: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/25.jpg)
function-name(def )
(def new-code ) (eval new-code)
(first )'(println "Hello, World")
(list function-name "Goodbye, Cruel World")
prints: “Goodbye, Cruel World”
![Page 26: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/26.jpg)
(defmacro emoify [original-code] (let [ ] (emoify (println "Hello, World"))
function-name (first )'(println "Hello, World")(list function-name "Goodbye, Cruel World")
![Page 27: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/27.jpg)
(defmacro emoify [original-code] (let [ ] (emoify (println "Hello, World"))
function-name (first )'(println "Hello, World")(list function-name "Goodbye, Cruel World")
prints: “Goodbye, Cruel World”
![Page 28: Advanced](https://reader033.fdocuments.net/reader033/viewer/2022052906/5589e750d8b42aba1b8b4625/html5/thumbnails/28.jpg)
FINQuestions?