Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2006-01-25)
[go: Go Back, main page]

«前の日記(2006-01-24) 最新 次の日記(2006-01-26)» 編集

Matzにっき

<< 2006/01/ 1 1. 元旦
2 1. 出産
2. 帰省
3. 到着
3 1. デジタル体重計のユーザインタフェース
4 1. Classbox
2. Classboxの実装
5 1. 帰宅
2. PCレスライフ
6 1. PC修理
7 1. 雪かき
2. プログラミング言語SRU
8 1. 断食安息日
2. あーめん
3. 筋肉痛・体調不良
9 1. 米子
10 1. オープンソースマガジン3月号
11 1. 日経Linux 3月号
12 1. Charming Ruby Compiler
2. The Open Nature Of Ruby
13 1. ニート娘に悩む親
2. Python Status Update
3. 泥縄
14 1. 宣教師のお手伝い
2. Simplified/Traditional
3. ボーリング
15 1. 代打不発
2. セミナリー補習
16 1. 不達
2. 誕生日
17 1. 萌え指向プログラミング言語「萌香」
2. Classbox/R
18 1. CommonLispのpackage
19 1. これは便利! と思える elisp プログラムを教えてください
20 1. 「オブジェクト指向神話」神話
21 1. 片付けの日
2. 食べ放題は危険
22 1. 松江
2. お客さま
23 24 1. ruby_block撲滅運動
2. 『よくわかる現代魔法
25 1. 遅延Enumerable
26 1. Thinkpad復活
2. Rastに挑戦?
3. オープンソースの全文検索エンジンの速度性能比較」のご紹介
27 1. 「Javaの生みの親」に聞く「AJAX、LAMP、Ruby on Rails」
2. 「オブジェクト指向」改め「抽象データ指向」
28 1. LINQ
2. シガーソングライター(もどき)
29 1. 慈愛
2. 天国
30 31 1. サブジェクト指向
>>
Dr.Web 予測するアンチウイルス  Hiki も使った新サイト、10/18 リニューアルオープン!

2006-01-25 [長年日記]

_ [Ruby] 遅延Enumerable

ところで、現在Enumerable#selectなど一連のメソッドは Arrayを返しているわけだが、 これをEnumeratorを返すようにすると、一種の遅延実行が実現できるのではないだろうか。

イテレーションの中でしか実行できないので、 関数型言語における遅延実行のようなわけにはいかないけれども。

要素数が非常に多くなると効率に違いが出てくるかもしれない。 無限な要素([1..]とか)も扱えるようになる。

とりあえず、将来への布石として 1.upto(3)などをブロックなしで呼んだときにはEnumeratorを返すようにする。

うーん、あんまり布石になってないかな。

本日のツッコミ(全5件) [ツッコミを入れる]
_ yk (2006-01-29 13:20)

Enumerator化期待してます。

_ NyaRuRu (2006-01-29 14:43)

>Enumeratorを返す
C# 3.0 の LINQ がまさにそれですね.
一歩進んで delegate-to-expression-tree translator を返すようにしたのが DLINQ,XLINQ と.
http://www.idealliance.org/xmlusa/05/call/xmlpapers/63.1015/.63.html

_ NyaRuRu (2006-01-29 15:14)

訂正です.
>delegate-to-expression-tree translator を返す
というよりは,イテレーションの連鎖全体を現す Query オブジェクトですね.返すのは.
で,「イテレーションの連鎖」から後で SQL を組み立てるのが DLINQ と.

_ Fumiaki Yoshimatsu (2006-01-30 15:38)

C#でEnumeratorを返すっていうとLINQよりはyieldを思い出すんですが、これは全然違うんでしょうか?
http://www.theserverside.net/articles/showarticle.tss?id=IteratorsWithC2

_ NyaRuRu (2006-01-30 19:13)

>yield
C:\Program Files\LINQ Preview\Docs\Sequence.cs に LINQ のオペレータの参照実装が存在するんですが,yield による pipeline pattern のオンパレードです.
というわけで根っこは同じかと.

お名前:
E-mail:
コメント:
本日のリンク元
検索

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.