Our great sponsors
-
electric
a reactive Clojure dialect for web development that uses a compiler to infer the frontend/backend boundary (by hyperfiddle)
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
Scala's ZIO/ZLayer is a great implementation of this idea where the monadic types are visible to userland DSL. Electric Clojure (which I lead) is a Clojure implementation of similar ideas (specialized to web development) where the types are concealed, "just write Clojure". In practice with Electric, we are building really complex/dynamic abstractions (think pure functional app-builder and highly concurrent UI) and we haven't even felt a need to implement multimethods yet. https://github.com/hyperfiddle/electric
I wanted ClojureScript, without transpilation, in the browser so badly I implemented much of it in plain JS. But JS still lacks first-class protocols (although there is a T39 proposal for them) so I have to implement protocols first. And I can tell you from having implemented much of Clojure myself in plain JS that it's protocols all the way down. 80% of my library are types and their protocols.