मुझे पायथन 3.x की नई भाषा डिजाइन को समझने में दिलचस्पी है ।
मैं पायथन 2.7 में, फंक्शन का आनंद लेता हूं map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
हालाँकि, पायथन में 3.x चीजें बदल गई हैं:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
मुझे समझ में कैसे आया, लेकिन मुझे इसका संदर्भ नहीं मिला। भाषा डिजाइनरों ने यह विकल्प क्यों बनाया, जो, मेरी राय में, बहुत दर्द का परिचय देता है। क्या यह बांझ-कुश्ती डेवलपर्स को समझ की सूची से चिपके रहने के लिए था?
IMO, सूची को स्वाभाविक रूप से फ़नट्रक्टर के रूप में सोचा जा सकता है ; और मुझे इस तरह से सोचने के लिए किसी तरह से सोचा गया है:
fmap :: (a -> b) -> f a -> f b