class Method::Composition

Method Composition class acts a proxy for composed methods.

@author Mike Burns

Public Class Methods

new(f,g) click to toggle source
# File lib/facets/method/composition.rb, line 9
def initialize(f,g)
  @f = f
  @g = g
end

Public Instance Methods

*(h) click to toggle source
# File lib/facets/method/composition.rb, line 15
def *(h)
  Composition.new(self, h)
end
[](*x) click to toggle source
# File lib/facets/method/composition.rb, line 56
def [](*x)
  call(*x)
end
^(n) click to toggle source
# File lib/facets/method/composition.rb, line 20
def ^(n)
  return self if n < 2
  Composition.new(self, self ^ (n-1))
end
arity() click to toggle source
# File lib/facets/method/composition.rb, line 41
def arity
  @g.arity
end
call(x) click to toggle source
# File lib/facets/method/composition.rb, line 51
def call(x)
  @f.call(*@g.call(*x))
end
inspect() click to toggle source
# File lib/facets/method/composition.rb, line 36
def inspect
  "#<Method::Composition: #{@f.inspect} * #{@g.inspect}>"
end
owner() click to toggle source
# File lib/facets/method/composition.rb, line 26
def owner
  @g.owner
end
receiver() click to toggle source
# File lib/facets/method/composition.rb, line 31
def receiver
  @g.receiver
end
to_proc() click to toggle source
# File lib/facets/method/composition.rb, line 46
def to_proc
  Proc.new {|x| @f.call(*@g.call(*x)) }
end