In python, you could do this sort of thing.
def foo(): return "bar" x = foo print x() # "bar"
In ruby you can call a function without brackets. So you can do:
def foo() return "bar" end puts foo # "bar"
My question was. How would you pass a function in ruby? This is one way:
def foo() return "foo" end x = lambda {foo} puts x puts x.call() # "foo"
Starting from humble beginnings. I wondered if I could use this mechanism for setting up a function with arguments that I could call later. The way you do this is quite intuitive.
def add(a,b) return a+b end y = lambda{add(3,2)} puts y puts y.call() # 5
From here its easy to think that currying in ruby must be very simple. It is!
def add(a,b) return a+b end plus = lambda {|a,b| add(a,b)} curry_plus = plus.curry plus_two = curry_plus[2] puts plus_two[3] # 5
No comments:
Post a Comment