我对了解Python 3.x的新语言设计感兴趣。
我在Python 2.7中确实喜欢这个函数map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
但是,在Python 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