This reminds me of the Make Illegal States Unrepresentable[0] idea, where something will return a ‘ResolvedExecutor’ type to guarantee that you’re only working with something in the state you want. Go makes this a little clunky to do, though. I suppose you could use Generics to implement a Preresolved and Resolved struct.[0] https://fsharpforfunandprofit.com/posts/designing-with-types...
iainmerrick|1 year ago
It might work in a language with linear types or some concept of ownership. Execute() would take ownership of the Resolver and prevent it being called again.