initial yield object support

basically a copy and paste of `.join()`. you may want to:

- alias the method as something other than `.map()`
- combine this method with `.join()`. personally i don't mind the redundancy.
- do the type check in `.join()` and make `.map()` private.