On Github decomplecting / time-and-concurrency
Jason Lewis
Yet Analytics
I think I was destined to become a functional programmer.
Some years ago
I spraypainted liked graffiti like this...
...and ended up here.
You could not step twice into the same river.
— Heraclitus of EphesusClojure
Datomic
(of which these are but two)
Really, (>= things 3)
Object-Oriented (stateful):
Functional:
Web programming IS distributed systems programming.
Even in the simplest web application, we need to consider at least 3 things: the server, the browser, and the user.
One language, two hosts:
Code Sharing
(defn str->int [s] #?(:clj (java.lang.Integer/parseInt s) :cljs (js/parseInt s)))
Since Datomic retains the history of the db state, we can query the db as-of any given point in time.
Since it treats the db as a value, and uses the same persistent data structures as Clojure itself, we can also query the future, by joining arbitrary data to a given db value.
(q '[:find ?title :where [?e :movie/year 1987] [?e :movie/title ?title]])
Datomic's datalog queries are just vectors, which means they can be passed around like any other of Clojure's persistent data structures... even from the browser to the server.
Time = λ
Baltimore Clojure Meetup
Jason Lewis
Yet Analytics
jason@yetanalytics.com