Module: Iolite::Functinal

Included in:
Iolite
Defined in:
lib/iolite/functinal/bind.rb,
lib/iolite/functinal/send.rb,
lib/iolite/functinal/invoke.rb

Class Method Summary collapse

Class Method Details

.bind(func, *args_) ⇒ Object



4
5
6
7
8
9
10
# 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) ⇒ Object



2
3
4
# 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) ⇒ Object



7
8
9
# 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) ⇒ Object



4
5
6
7
8
9
10
11
# 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