Why not just put the type documentation into the embeded programmer documentation above your function?
That creates a distance between the action and the documentation. That's harder to read for the maintainance programmer (the further away, the more movement in the editor needs to be done). It also makes easier for the documentation and the code to get out of sync.
To call your function correctly, others need to know what they can and can't pass to it, and what will happen if they do.
But the comments merlyn was making weren't intended for the user (then they would be in the POD) - they were there for the (maintainance) programmer. Two very different beings. With different needs. And different documentation.
When I need to extract the programmer documentation, I have a twenty line perl script that extracts the 'programmmerdocs' section, and pipes the results of those sections to the standard pod translator.
I hope I never ever have to maintain your code. Comments should be right there where the code is, and not somewhere tucked away where I need a different tool to read them.