Bruce.です。
MATSUI Fe2+ Tetsushi writes:
> Fe2+ です。
>
> At Wed, 3 Oct 2007 08:34:52 +0900 (JST),
> 機械伯爵 wrote:
> > ……一発目で、話がいきなりズレましたね(汗)
> >
> > 私は、「変数を使ってもわかりやすい」から始まって、「どんなタイプの
> > プログラミングスタイルへ誘導したらよいか」という話題を振りたいための
> > スケッチ(NHK言語講座で言うならスキット)のつもりだったんですが……
>
> ある意味、関数型プログラミングスタイルへの誘導なのでは。
うい、むしゅー。
#Haskellの壁は高い
> > 一応、py3k版(+プチ改良)を。
> >
> > from functools import reduce
> > ans = reduce(lambda v, f: f(v),(
> > 1,
> > lambda v: v * 2,
> > lambda v: v * 3,
> > lambda v: v * 4,
> > lambda v: v * 5,
> > lambda v: v * 6))
> >
> > print(ans)
>
> ちゃちゃですが、reduce に渡しているシーケンスで初期値と関数という異質な
> ものが並んでいるのは気持ち悪いので、初期値は reduce の第3引数に渡した方
> が良いと思います。
まず機械さんあてに。reduceで適用する関数群にlambdaを使わなかったのはわざと
ですので、そこを「改良」とか云われると背中がむずがゆいです。
あと、この場合にタプルとリストとで何か変わるのでしょうか?
んで、Fe2+さん指摘の点はそのとおりだと思います。
#1を返す関数とか作ろうかとも思ったのですが :)
ただ、一応確認してから使ったのですが、reduce は redece(func, seq) に
と出ていたので三引数にできるとは知りませんでした。
5. データ構造
http://www.python.jp/doc/2.4/tut/node7.html
#That's イイワケ
> 上の例を見て(使い捨て)階乗関数を(無意味に)経由してみた例
> (Python 2.4以上(py3k では print,reduce に注意)):
> print (lambda n: (reduce(lambda v, f: f(v),
> ((lambda v: v * i) for i in range(2, n + 1)),
> 1)))(6)
> # Haskell まであと一歩(なのかな?)
ああ、これはやろうとして自重していたのに :)
#ジェネレータ大好き野郎
いじょ。