Я заинтересован в понимании дизайна нового языка Python 3.x.
Мне нравится в Python 2.7 функция map
:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
Однако в Python 3.x все изменилось:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
Я понимаю, как, но я не мог найти ссылку на причину. Почему дизайнеры языка сделали этот выбор, который, на мой взгляд, вызывает большую боль. Было ли это для разработчиков оружия, чтобы придерживаться списков?
IMO, список можно считать естественным Functors; и меня как-то думали думать таким образом:
fmap :: (a -> b) -> f a -> f b