This is really exciting example of FunctionalReactiveProgramming
A ClojureLanguage library for declaring web applications.
Basic idea is to wrap client and server around various functions to explain where they are run. Then behind the scenes Photon separates them out into a DirectedAcyclicGraph representing the DataFlow between things that happen on the client and on the server
;; Example of how code looks
(p/defn App [db] (p/client (dom/div (let [email (dom/input)] (dom/h1 "Your orders: " (p/server (orders-for-email email db)) ) ) ) ) )
In a sense, this use of p/client and p/server is a bit like the way CarpLang wraps type commitments around expressions (which is a way of adding types to Lisps that looks "right" to me)
The nice thing is that these seem to nest the same way Lisp code does in general
Missionary is reactive ClojureLibrary behind it : https://github.com/leonoel/missionary/