ClojureDart is a port of the Clojure language to Dart.
Its primary goal is to leverage Dart and Flutter to extend Clojure's reach to mobile and desktop apps.
We promised to publicly release ClojureDart before Easter 2022, so here it is!
This doesn't represent a specific technical milestone, it's still a work-in-progress but we believe it's good enough for use by the bravest Clojurists.
Tensegritics, an itty-bitty Clojure consultancy by Baptiste Dupuch🐦 and Christophe Grand🐦.
Here be Dragons!
ClojureDart is a work-in-progress. Some features may be outright missing or partially implemented or even bugged. In any case get in touch with us or open an issue.
- no REPL yet
- multi-method (WIP)
- sorted-collection (WIP)
Some differences have been documented, see Differences with Clojure.
- Plain Dart (recommended first step)
- With Flutter
cljd.flutter.alpha
is an utility namespace to remove Flutter boilerplate and integrate it a bit more with Clojure.
In the samples directory you'll find some ports of Flutter recipes.
Clone the ClojureDart repo.
git clone https://github.com/Tensegritics/ClojureDart.git
Go to the sample you want to try, let's say fab
:
cd ClojureDart/samples/fab
Init the project:
clj -M:cljd init
Start a simulator or connect a device.
Then launch the watcher:
clj -M:cljd flutter
Enjoy! 🧃
To all individuals who blindly believed in our endeavor and sponsored our work.
To NuBank who approached us very early for sponsorship.
To Roam Research who bet their mobile apps development (now in the App Store and Play Store) on ClojureDart and allowed us to make steady progress since Summer 2021.
If you want to sponsor our work, you can sponsor either of us, we'll balance sponsorship. If you are a company you can also contact us directly.