We took this kind of concept all the way to making a DSL called BAML, where prompts look like literal functions, with input and output types.
Playground link here https://www.promptfiddle.com/
https://github.com/BoundaryML/baml
(tried pasting code but the formatting is completely off here, sorry).
We think we could run some optimizers on this as well in the future! We'll definitely use DSPy as inspiration!