What's possibly so cumbersome about defining return types?
It does seem a little embarrassing that the annotations don't even support circular references.
It does seem a little embarrassing that the annotations don't even support circular references.
Even if you just want to write a practical interpreter, and choose to gloss over the issues, they will still come back in some disguised form and either by requiring some sort of implementation kludge, or just by creating weird edge cases.