Class Functor
In: lib/facet/functor.rb
Parent: Object

Description

By definition a Functor is simply a first class method, but these are common in the form of Method and Proc. So here a Functor is a bit more specialied as a 1st class metafunction. Essentally, a Functor can vary its behavior accorrding to the operation applied to it.

Synopsis

  require 'facet/functor'

  f = Functor.new { |op, x| x.send(op, x) }
  f + 1  #=> 2
  f + 2  #=> 4
  f + 3  #=> 6
  f * 1  #=> 1
  f * 2  #=> 2
  f * 3  #=> 9

Notes

It would probably be a little better if we had a kernelless base object class. Built-in public Object methods will not work in a Functor b/c of this. Or perhaps this can improved via delegation.

Author(s)

  • Thomas Sawyer

Methods

Public Class methods

Public Instance methods

[Validate]