Module: LambdaDriver::Composable

Included in:
Method, Proc, Symbol
Defined in:
lib/lambda_driver/composable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



27
28
29
# File 'lib/lambda_driver/composable.rb', line 27

def self.included(klass)
  klass.send(:alias_method, :<<, :compose)
end

Instance Method Details

#>>(g) ⇒ Object

g compose self



23
24
25
# File 'lib/lambda_driver/composable.rb', line 23

def >>(g)
  g.to_proc << self
end

#compose(g) ⇒ Object

Returns new lambda which composed self and given function. A composed proc called with args, executes ‘self.(g(*args)).

f = lambda{|x| x.to_s }
g = lambda{|y| y.length }
h = f compose g
h.(:hoge) # => 4

This method is aliased as ‘<<`.

f << g # => f.compose(g)


16
17
18
19
20
# File 'lib/lambda_driver/composable.rb', line 16

def compose(g)
  lambda{|*args|
    self.to_proc.call(g.to_proc.call(*args))
  }
end