&gt; these aren&#x27;t <i>programming</i> languages, they&#x27;re <i>data</i> languages.<p>Sounds like a job for free applicative functors, which are strictly less powerful than free monads (which you can imagine as the set of interpretable languages).  From John De Goes&#x27;s ScalaWorld 2015 presentation:<p>Free Functors:  Programs that Change Values<p>Free Applicatives:  Programs that Build Data<p>Free Monads:  Programs that Build Programs