I have the feeling the crux of making “everything”
Expression is not so much that it’s an expression per se, but that these things are highly composable. For that they more or less automatically “expression-y”, or actually act like monads in some way.
This is also my experience with MPS: the learning curve starts at a precipice and only when you’ve got climbed that, you slowly start to become more productive and quicker to learn (but slowly).
Nevertheless: it’s still quite a bit better than the Intentional Domain Workbench was ;)
The only Xpand I know is the precursor to Xtext’s Xtend language, and which is only suitable for code generation, so I’d be quite surprised if you found a language engineering side to that ;)
How is MPS restrictive in your experience? You basically can do anything with it, but obviously at a certain cost. A colleague of mine…
In the projectional space, MPS is essentially the only option, since the general availability of the Intentional Domain Workbench is now even more astronomically unlikely. Plus I didn’t continue with Más, and I didn’t start writing my book yet ;)
In the textual space, there are some other options than Xtext and Acceleo, but…
At some point during my tenure with a former employer, I posited that I would excuse myself from any UI/UX-related conversation where the other party used the Dutch word “gewoon” (closest contextually-correct translation for “just”). “gewoon”/”just” was in this context habitually used to justify not having to specify anything, or even think about corner cases.
I don’t consider it a plus: it’s just an observation on why M2T generation works so generically across all target languages — provided they are textual, of course. This means that it’s very easy to start on a M2T generator (especially in a runway mode), but of course getting and keeping the templates really correct requires more effort in the longer…