How to implement promotion for functions like `collect` and `map`?

map(f, c) is roughly equivalent to collect(Iterators.map(f, c)). collect also allows specifying the element type explicitly:

collect(T, Iterators.map(f, c))

There’s also my package, Collects.jl: