implementing `map`! Now we can pretend we're a functional language!