Jestem zainteresowany w zrozumieniu nowej konstrukcji języka Python 3.x .
Podoba mi się funkcja w Pythonie 2.7 map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
Jednak w Pythonie 3.x sytuacja uległa zmianie:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
Rozumiem jak, ale nie mogłem znaleźć odniesienia do przyczyny. Dlaczego projektanci języka dokonali takiego wyboru, który moim zdaniem wprowadza wiele bólu. Czy to było dla twórców siłowania się na rękę, którzy trzymali się listy zrozumień?
IMO, listę można oczywiście traktować jako funktory ; i jakoś sądzono, że myślę w ten sposób:
fmap :: (a -> b) -> f a -> f b