Hatena::Grouprubyist

たばさの RSSフィード

11/13(木) 2008

loop つづき

| loop つづき - たばさの を含むブックマーク はてなブックマーク - loop つづき - たばさの

rubyだとlambdaprocでどうだったかなぁ、と。

irb(main):001:0> (lambda{|i,j|puts i,j})[1,2]
1
2
=> nil
irb(main):002:0> (a=lambda{a[]})[]
SystemStackError: stack level too deep
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
        from (irb):2
        from (irb):2:in `[]'
... 22727 levels...
        from (irb):2:in `[]'
        from (irb):2
(略)

1.9だとlambdaなにか変わったんでしたっけ。



これだけだとなんだな。rubyのほうはすぐoverflowするなあ、あ、でも速いってことかな。

ということでcyanrubyで比べてみる。

t=0
(a=lambda{t+=1;print t;print",";a[]})[]
t=0
(a=^{t+=1;print(t);print(",");a()})()

ruby1.8.6

11366で stack level too deep (SystemStackError)

cyan1.0.2

269200(まだ実行中)

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20081113
カレンダー
<< 2008/11 >>
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
archive Error : RSSが取得できませんでした。