This pattern [(multi-stage programming)], which I’ll refer to as “biphasic programming,” is characterized by languages and frameworks that enable identical syntax to express computations executed in two distinct phases or environments while maintaining consistent behavior (i.e., semantics) across phases. These phases typically differ temporally (when they run), spatially (where they run), or both.
An older (2017) page on multi-stage programming
Winglang (“a programming language for the cloud”), the author’s language
It’s cool science, but I hesitate to use this stuff in anything I need to babysit, later, myself.
Domain specific languages typically exist for good reasons.
I appreciate this exploration though - if everyone took my approach, we might never find the cases that can still be improved on.
The scala 3 page on multi staged programming: https://docs.scala-lang.org/scala3/reference/metaprogramming/staging.html