Python 3.x'in yeni dil tasarımını anlamakla ilgileniyorum .
Python 2.7'de şu işlevden hoşlanıyorum map
:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
Ancak, Python 3.x'te işler değişti:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
Nasıl olduğunu anlıyorum ama neden olduğuna dair bir referans bulamadım. Dil tasarımcıları neden bu seçimi yaptılar ki bu bence büyük bir acı getiriyor. Bu, anlaşmaları listelemek için geliştiricileri kol güreşi yapmak için miydi?
IMO, liste doğal olarak Functors olarak düşünülebilir ; ve bir şekilde şu şekilde düşünmem düşünülmüştü:
fmap :: (a -> b) -> f a -> f b