Module: LambdaDriver::Composable
Class Method Summary collapse
Instance Method Summary collapse
-
#>>(g) ⇒ Object
g compose self.
-
#compose(g) ⇒ Object
Returns new lambda which composed self and given function.
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 |