My use cases would be virtually identical to the vtable usage of the standard library for things like streams. I just find that syntax extremely annoying and would love to have it abstracted away without having additional runtime costs.
In my perfect world this would be an addition to concepts, so that they can either make the function implictely generic as they do now or do dynamic dispatch via implicitely generated vtable. With that said I also would prefer the pointers to be dereferenced before the proc is called. That way keeping it alive out of scope would be save and you still could use a var param to get it mutably. That way interfaces would also mirror the static duck typing awesomeness and clean syntax you generally have in nim while also having the advantages of dynamic dispatch where necessary. Finally, I do agree that type reflectoon on interfaces doesn't really seem necessary. The tight coupling seems to remove the whole purpose the interface had in the first place. An if you aren't interested in that there are, like, three other ways to do the same thing with less overhead and ugly hacks. Any use case that couldn't be solved with variant types, methods or generics more cleanly?
