Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
Rete.js
Rete.js is a framework for creating visual interfaces and workflows. It provides out-of-the-box solutions for visualization using various libraries and frameworks, as well as solutions for processing graphs based on dataflow and control flow approaches.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
If you're willing to base "cross-platform" on Node [1], then you can loosely achieve this with some choice of ClojureScript on the front end, and macchiato (which sits on Express) on the back.
I spent some time doing this ~3 years ago, so I don't know about now, but to my knowledge it was the only language where you could really use one language for everything: no HTML (via hiccup), no CSS (via garden), clojure/clojurescript everywhere, and no shell (via babashka).
[1] there are some interesting single-file deployment tools in Node like pkg
Is Photon a DSL made with Clojure then? Or is it it's own language completely, (maybe this one?: https://github.com/HashLDash/Photon)
Something to checkout for mobile and desktop is: https://github.com/Tensegritics/ClojureDart
Some of the other projects I've seen doing some things completely different are also darklang(not dart) and the Unison Language
I've never used F#, but I'd imagine if you're in the .NET ecosystem, you'll get a lot of excellent tooling for free. I don't think clojure's tooling is well suited for large projects. But you might actually find use for crazy stuff. Just today I'm trying to generate a tree whose nodes update like a spreadsheet. Looking around the typescript ecosystem, it looks like the most popular library is rete.js. But if you look at the examples, there's so much code just to set up 3 nodes! Class inheritance, Sockets, Components, Controls. So I pull in clojure, write a macro with a simplified graph definition syntax, and generate a graph instead. There's no Classes, no Components. Just data. Transform the graph, send to reagent, bam, visualized and interactive. For these (admittedly limited) use cases, I don't know a more powerful language.