pjb
1/14/2009 11:17:00 AM
zslevi <zslevi@gmail.com> writes:
> foo = lambda {|x|
> return lambda {|y| return x+y}}
>
> puts (foo.call(3)).call(4)
>
> It works finally, but it's just too verbose.
> Can anyone suggest a shorter, programmer friendlier way of writing
> this?
What about:
irb(main):038:0> (foo = (lambda {|x| (lambda {|y| (x + y)})}))
#<Proc:0x00007f797ea420f0@(irb):38>
irb(main):039:0> (funcall (funcall foo,3),4)
7
(See the "functional programming" thread).
or you could write:
(def uncurry(f,arg)
(funcall f,arg)
end)
and then:
(uncurry (uncurry foo,3),4)
--
__Pascal Bourguignon__