Ich bin daran interessiert, das neue Sprachdesign von Python 3.x zu verstehen .
In Python 2.7 gefällt mir die Funktion map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
In Python 3.x haben sich jedoch folgende Dinge geändert:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
Ich verstehe das Wie, aber ich konnte keinen Hinweis auf das Warum finden. Warum haben die Sprachdesigner diese Wahl getroffen, was meiner Meinung nach sehr schmerzhaft ist? War dies ein Problem für Entwickler, sich an das Listenverständnis zu halten?
IMO, Liste kann natürlich als Functors gedacht werden ; und ich wurde irgendwie gedacht, um so zu denken:
fmap :: (a -> b) -> f a -> f b