アカウント名:
パスワード:
SchemeやRubyですっかりイテレータジャンキーな俺としては、やっと本格的にPythonをいじりたい要素が出てきたかな、という感じ。インデント記法にもかなり慣れて(麻痺して)きたし。まぁそれでも、ZopeのためだけのPythonというのはやはり拭えないのだけれど。
# 何だか、素養として学ぶ言語が増えてしまって...
Schemeでは主に末尾再帰、Rubyでは内部イテレータで ほぼすべてのループ構造の抽象化を達成しているし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
イテレータ (スコア:2)
SchemeやRubyですっかりイテレータジャンキーな俺としては、やっと本格的にPythonをいじりたい要素が出てきたかな、という感じ。インデント記法にもかなり慣れて(麻痺して)きたし。まぁそれでも、ZopeのためだけのPythonというのはやはり拭えないのだけれど。
# 何だか、素養として学ぶ言語が増えてしまって...
Re:イテレータ (スコア:0, フレームのもと)
SchemeやRubyは早くに完成していたから特にもう目玉なんて機能が増える可能性は低いけど、そんな中でキラーアプリケーションを持ちつつまだ言語仕様としての成長期にあるPythonに注目が集まるのは必然か。
-- undertow.
"BSD has never been a legacy, but a living innovator."
Re:イテレータ (スコア:0)
Re:イテレータ (スコア:0, 余計なもの)
-- undertow.
"BSD has never been a legacy, but a living innovator."
Re:イテレータ (スコア:0)
「よくこれだけ後付け後付けでやってこれたものだと感心。」
は皮肉じゃないことが読めない人のためにそれを明確したのに
「余計なもの」ですか。
んー。発言者の同一性が無意味なら、今後はたいがいACで
書くことにします。
※「最初の文は皮肉です。」
-- undertow.
"BSD has never been a legacy, but a living innovator."
Re:イテレータ (スコア:0)
Re:イテレータ (スコア:1)
Schemeでは主に末尾再帰、Rubyでは内部イテレータで
ほぼすべてのループ構造の抽象化を達成しているし。
個人的にはこういうイテレータオブジェクトが
ステートを保持しなくて済むループ方式が好み。
# Perlでeach %assocをループ以外で使ったりするのを
# 見ると頭がくらくらする。 X-)
そのRubyのGenerator実装は、callccを使えばIconや
Python 2.2と同等のハイブリッドなイテレータも
普通に実装できますよ、というデモ程度ではないかな。
VM/bytecode化していないRubyで繰り返しごとにcallccを
読んだらイテレータに比べて100倍遅いという結果に
なるのも当然。
その点で、とっくにそのハードルを越えているPython
での導入には旨味があるね。新しい文法要素を導入した
といっても、実装はさほど苦労しなかったろう。
-- undertow.
"BSD has never been a legacy, but a living innovator."
Re:イテレータ (スコア:1)
モデルについては、昨年comp.lang.schemeでOleg Kiselyovが
論じていますね。
http://pobox.com/~oleg/ftp/Scheme/enumerators-callcc.html
Rubyによる実装も本質的にはこれと同じだと思います。
Re:イテレータ (スコア:0)
Re:イテレータ (スコア:1)
CPS変換、末尾再帰の最適化、継続の除去なんかを昔に勉強したときは感動したんだけど、Schemeはとんとご無沙汰でした。最近、Rubyの継続(call/cc)や末尾再帰の実装を見てふとまた触りたくなって再勉強中。ついでに関数型言語つながりでSMLもいじり出したり。
...なかなかPythonにまで手が回らない。動向はウォッチしてるけど。
-- undertow.
"BSD has never been a legacy, but a living innovator."
Re:イテレータ (スコア:0)
Re:イテレータ (スコア:0)
せっかくのまともな話題なのに、Rubyって名前が出ただけでルビ厨戦争起こされては迷惑。