[Python-3000] Draft pre-PEP: function annotations (original) (raw)
Josiah Carlson jcarlson at uci.edu
Sun Aug 13 06:16:18 CEST 2006
- Previous message: [Python-3000] Draft pre-PEP: function annotations
- Next message: [Python-3000] Draft pre-PEP: function annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Phillip J. Eby" <pje at telecommunity.com> wrote:
However, if you have:
def myfunc( x : doc("The x coordinate"), y : doc("The y coordinate") ) There is no ambiguity. Likewise: def cat( infile:opt("i") = sys.stdin, outfile:opt("o") = sys.stdout ): is unambiguous. And the interpetation of: def cat(infile: [doc("input stream"), opt("i")] = sys.stdin, outfile: [doc("output stream"), opt("o")] = sys.stdout ): is likewise unambiguous, unless the creator of the documentation or option features has defined some other interpretation for a list than "recursively apply to contained items". In which case, you need only do something like: def cat(infile: docopt("input stream", "i") = sys.stdin, outfile: docopt("output stream", "o") = sys.stdout ):
I now understand where you were coming from with regards to this being equivalent to pickle (at least pickle + copy_reg). I think that if you would have posted this particular sample a couple days ago, there wouldn't have been the discussion (argument?) about incompatible mechanisms for annotation processing.
With that said, the above is a protocol. Just like len, str, copy_reg, reduce, setstate, etc., are protocols. It may not be fully specified (when annotations are to be processed, if at all, by whom, where the annotation registry is, etc.), but it is still a protocol.
Do we need any more specification for the PEP and 2.6/3k? I don't know, maybe. You claim no, with the history of PEAK and other languages as proof that doing anything more is unnecessary. And I can understand why you would resist any further specification: PEAK has been doing annotations for quite a while, and additional specifications could make transitioning to these annotations a pain in the ass for you and your users.
I'm personally not convinced that no further specification is desired or necessary (provided we include a variant of the above example annotations), but I also cannot convince myself that specifying anything further would be flexible enough to not be a mistake.
- Josiah
- Previous message: [Python-3000] Draft pre-PEP: function annotations
- Next message: [Python-3000] Draft pre-PEP: function annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]