Online: malloc47.com/posscon2015/
Big Data-○-Software Development-○-Clojure
Computer Vision-○-Image Processing-○-Machine Learning
Expert system that applies an inference engine to a knowledge base consisting of if/then rules and facts, executing arbitrary actions or inserting new facts when a rule matches.
http://www.drdobbs.com/architecture-and-design/the-rete-matching-algorithm/184405218
Popular rules engines:
(defrecord Applicant [name age])
(defrecord Grade [type score])
(defrecord Parents [income alumni?])
(defrecord Accept [])
(defrecord Aid [amount])
Must use facts for input and output
(defrule good-enough-grades
[Grade (= type :gpa) (> score 3.0)]
[:or
[Grade (= type :sat) (> score 1500)]
[Grade (= type :act) (> score 20)]]
=>
(insert! (->Accept)))
(defrule rich-parents
[Parents (> income 2000000)]
=>
(insert! (->Accept)))
(defrule aid-package
[Accept]
[Applicant (< age 26)]
[Parents (< income 60000)]
=>
(insert! (->Aid 20000)))
(def facts
[(->Applicant "Phil" 22)
(->Parents 50000 false)
(->Grade :gpa 3.1)
(->Grade :sat 1650)])
(defn run-rules []
(let [session
(-> (mk-session 'examples.college :cache false)
(insert-all facts)
(fire-rules))]
#_(print results here))
=>
Accepted: true
Aid : 20000