作者: Bruce.
日時: 2009/1/23(12:19)
Bruce.です。

オレンジニュースに取り上げられた成果? 早速チェックがはいっている模様

What's New In Python3.0 日本語版 - 西尾泰和のはてなダイアリー
http://d.hatena.ne.jp/nishiohirokazu/20090123/1232662308



>>    本文はGuido van Rossumの"What's New In Python 3.0"( http://docs.python.org/3.0/whatsnew/3.0.html )の全訳です。

>すばらしい(拍手)

>気になったところはここに書きためていって、ある程度まとまってからフィードバックしようっと。

んで、mapのところについて

> とここまでは原文にかかれている説明だけども論点がおかしいよね。
> 副作用がある関数を使うことと、結果として作られるリストが無駄ということは独立な話。
> 注意喚起すべきなのは2.*では上のmapを使うコードとforを使うコードは同じ動きをするけども3.0ではそうではないってところじゃないだろうか。
> つまり、mapがイテレータを返すようになったことで、関数の評価が結果が必要とされるまで遅延するようになったわけだけど、
> 上のトリッキーな書き方をしているコードではmapの結果を必要としないので本来起きるべきだった副作用がまるっと抜けたまま走り続けてしまう。
> 副作用があるかないかを判定しようとすると実装に大幅に手を入れないと行けないからめんどくさいし、
> そもそもmapをそんな目的に使うのは嫌いなので「トリッキーな書き方だからダメなんだ」ということにしたいわけですね。

で、
>python
Python 3.0 (r30:67507, Dec  3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> map(print, [1, 2, 3])
<map object at 0x00A3F570>
>>>

おー。確かに。
これは気がつかなかった(たぶん元記事の筆者も)。

他にも幾つか指摘されています。
#てかわたしも指摘したけど修正後のものをチェックしてなくて
#意図が伝わってなかったもんがあったあああ
#で、西尾さんも指摘してる

おって連絡が入るなり、Wikiの書き換えがされるとは思いますが。


いじょ。