Functor is Ruby‘s
implementation of a Higher-Order-Message. Essentally, a Functor can vary its behavior
accorrding to the operation applied to it.
Example
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