Ruby blocks vs lambdas

It is possible to define and use first-class functions in Ruby. They are defined using a familiar lambda notation (see below). You can pass as many functions as you want to a function. Note that to call the function, you use call method, just like for a block. Syntactically, however, blocks are different from lambdas and allow you to write more natural code where blocks are used as a "loop" body. You cannot do it with a lambda.


###### may be used to write a traverse-like function in #################
###### Nested Array to write all other methods as calls to traverse #####
 
# creating a function that you can pass to another function
add_two = lambda {|x| x + 2}
p add_two.call(5)

repeat = lambda {|y, z| y.call(y.call(z))}

# functions can now be passed around 
# cannot do it with blocks :-(
def call_two_functions(f1, f2) 
 return f2.call(f1, 5)
end

p call_two_functions(add_two, repeat)

CSci 4651 course.