[Python-ideas] Proposal: Use mypy syntax for function annotations

Guido van Rossum guido at python.org
Thu Aug 14 07:24:12 CEST 2014


On Wed, Aug 13, 2014 at 9:06 PM, Jukka Lehtosalo <jlehtosalo at gmail.com>
wrote:
>
>
> You could use AnyStr to make the example work with bytes as well:
>
>   def word_count(input: Iterable[AnyStr]) -> Dict[AnyStr, int]:
>       result = {}  #type: Dict[AnyStr, int]
>
>       for line in input:
>           for word in line.split():
>               result[word] = result.get(word, 0) + 1
>       return result
>
> Again, if this is just a simple utility function that you use once or
> twice, I see no reason to spend a lot of effort in coming up with the most
> general signature. Types are an abstraction and they can't express
> everything precisely -- there will always be a lot of cases where you can't
> express the most general type. However, I think that relatively simple
> types work well enough most of the time, and give the most bang for the
> buck.
>

I heartily agree. But just for the type theorists amongst us, if I really
wanted to write the most general type, how would I express that the AnyStr
in the return type matches the one in the argument? (I think pytypedecl
would use something like T <= AnyStr.)

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20140813/021fb680/attachment.html>


More information about the Python-ideas mailing list