HyperFiddleElectric

ThoughtStorms Wiki

This is really exciting example of FunctionalReactiveProgramming

Was "Photon", now called Electric : https://github.com/hyperfiddle/electric

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

Watch video on https://www.hytradboi.com/2022/uis-are-streaming-dags (via https://twitter.com/calherries/status/1520375286323466240

;; 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/

Contrast :