I am working on an idea for programming that the primitive is literally moving things around in a grid. In a spreadsheet the formula is hidden behind a cell. And in most programming languages we write instructions and the state is implied - you don't see the state unless the program writes it out. In this design you see the state and all objects at all times. The idea is that the instruction is generated from the movement.
https://replit.com/@Chronological/DynamicTables
Try clicking "100" and move it into the JSON below.
At the moment I've implemented movement and JSON -> table. You can move things between fields in the JSON. You can rewind states of the top grid by clicking the instruction.
The plan is to put operations and API calls on the screen so you can move things into them, and their results shall go back into the grid.
Generally you have 3 kinds of things in Clojure: associations (maps), sets (uniqueness), and order (lists/vectors).
I, too, am a fan, especially in data intense applications, where a clear / decoupled data model and aggressive compiler solve many headaches.