module Iolite::Functinal
Public Class Methods
bind(func, *args_)
click to toggle source
# File lib/iolite/functinal/bind.rb, line 4 def bind func, *args_ Iolite.lazy { |*args| # func.call(*invoke_a(args_, *args)) invoke(func, *args).call(*invoke_a(args_, *args)) # func.call(*args).call(*invoke_a(args_, *args)) } end
invoke(func, *args)
click to toggle source
# File lib/iolite/functinal/invoke.rb, line 2 def invoke func, *args func.respond_to?(:iolite_functinal_invoke_call) ? func.iolite_functinal_invoke_call(*args) : func end
invoke_a(funcs, *args)
click to toggle source
# File lib/iolite/functinal/invoke.rb, line 7 def invoke_a funcs, *args funcs.map{ |it| invoke(it, *args) } end
send(func, method, *args_, &block)
click to toggle source
# File lib/iolite/functinal/send.rb, line 4 def send func, method, *args_, &block Lazy.new { |*args| # block = invoke(block, *args) if block invoke(func, *args).send(method, *invoke_a(args_, *args), &block) # invoke(func, *args).send(method, *invoke_a(args_, *args), &block) # func.call(*args).send(method, *invoke_a(args_, *args), &block) } end
Private Instance Methods
bind(func, *args_)
click to toggle source
# File lib/iolite/functinal/bind.rb, line 4 def bind func, *args_ Iolite.lazy { |*args| # func.call(*invoke_a(args_, *args)) invoke(func, *args).call(*invoke_a(args_, *args)) # func.call(*args).call(*invoke_a(args_, *args)) } end
invoke(func, *args)
click to toggle source
# File lib/iolite/functinal/invoke.rb, line 2 def invoke func, *args func.respond_to?(:iolite_functinal_invoke_call) ? func.iolite_functinal_invoke_call(*args) : func end
invoke_a(funcs, *args)
click to toggle source
# File lib/iolite/functinal/invoke.rb, line 7 def invoke_a funcs, *args funcs.map{ |it| invoke(it, *args) } end
send(func, method, *args_, &block)
click to toggle source
# File lib/iolite/functinal/send.rb, line 4 def send func, method, *args_, &block Lazy.new { |*args| # block = invoke(block, *args) if block invoke(func, *args).send(method, *invoke_a(args_, *args), &block) # invoke(func, *args).send(method, *invoke_a(args_, *args), &block) # func.call(*args).send(method, *invoke_a(args_, *args), &block) } end