One of the core mental models of Clojure is: Write data structures. Create functions that take that data as input and create new data structures as their output, and flow the output of those into other functions. Essentially, model the world through data and its transformations.
One of my biggest motivations to learn Clojure is to explore the idea of Domain-specific languages as end-user softwareDomain-specific languages as end-user software
What I learned from GuidedTrack
Working on GuidedTrack, I have become very interested in this concept of domain-specific languages as applications. GuidedTrack does this interesting thing where the functions are so high level that it's fairly plug and play to make a research study, form, or choose-your-own-adventure story.
You can even write your code in a structured editor that lets you fill out a form to generate your code for you. As you get more familiar with the language, you don't n.... Given the data-driven programming mental modelmental model
, DSL creation would be just creating a notation that allows people to create data structures, have a bunch of functions that transform those data structures in the background, have a bunch of pre-made functions, and let people create new functions. Sounds easy, right? 🙃️