Lambdas ####### Lambdas are similar to methods, except that lambdas are anonymous, ie. they do not have a name. Lambdas may also only have a single value for execution, ie. one line, which is automatically returned. Thus they are most similar to mathematical functions (eg. `f(x) = x^2`). :: a = (v) => v**2 puts(a(2)) # 4 # is almost the same as a = def fn(v) return v**2 end puts(a(2)) # 4 puts(fn(2)) # fn is also defined Because lambdas do not have a name, they also can't be overloaded like methods. :: a = (v) => v**2 a = (v, w) => v * w # Invalid! Since lambdas that take one or zero arguments are common, when defining those one can leave out the `()` brackets. :: a = v => v**2 puts(a(2)) # 4 b = => a(2) puts(b()) # 4 def do_twice(action) action() action() end do_twice(=> puts(2)) # 2 # 2