Path: | lib/core/facets/functor.rb |
Last Update: | Wed Jan 05 06:24:23 +0000 2011 |
By definition a Functor is simply a first class method, but these are common in the form of Method and Proc. So for Ruby a Functor is a more specialized as a Higher-order function or Metafunction. Essentally, a Functor can vary its behavior accorrding to the operation applied to it.
f = Functor.new { |op, x| x.send(op, x) } (f + 1) #=> 2 (f + 2) #=> 4 (f + 3) #=> 6 (f * 1) #=> 1 (f * 2) #=> 4 (f * 3) #=> 9