From: "Jesús Gabriel y Galán" Date: 2009-01-14T19:12:58+09:00 Subject: Re: Higher order ruby On Wed, Jan 14, 2009 at 11:09 AM, zslevi wrote: > foo = lambda {|x| lambda {|y| return x+y}} > > foo.call(3)(4) > > Why this doesn't work? I expected lamdas to behave like in SML. When you call foo, or apply it with [], you get another lambda in return. To call that lambda you have to use call again, or []: irb(main):001:0> foo = lambda {|x| lambda {|y| return x+y}} => # irb(main):002:0> foo[3][4] => 7 irb(main):003:0> foo.call(3).call(4) => 7 Jesus.