Dagger originally started with CUE, and is still powered by it under the hood, which has the constructs you mention, while also being turing incomplete.
I don't understand this move to define infra and CI imperatively, and tool vendors moving to support umptine languages for their users... Say what the world should look like, not how to get there?