Tôi đang quan tâm trong việc tìm hiểu ngôn ngữ thiết kế mới của Python 3.x .
Tôi thực sự thích, trong Python 2.7, hàm map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
Tuy nhiên, trong Python 3.x mọi thứ đã thay đổi:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
Tôi hiểu cách làm, nhưng tôi không thể tìm thấy tham chiếu đến lý do tại sao. Tại sao các nhà thiết kế ngôn ngữ lại đưa ra lựa chọn này, theo tôi, điều này gây ra rất nhiều đau đớn. Điều này có phải là để các nhà phát triển vật lộn trong việc bám sát vào việc hiểu danh sách không?
IMO, danh sách có thể được coi là Functors ; và bằng cách nào đó tôi đã được cho là nghĩ theo cách này:
fmap :: (a -> b) -> f a -> f b