class Frypan::Signal::Lift

Public Class Methods

new(*arg_signals, &proc) click to toggle source
# File lib/frypan.rb, line 160
def initialize(*arg_signals, &proc)
  @arg_signals, @proc = arg_signals, proc
end

Public Instance Methods

__calc(memo0, memo1, memo2) click to toggle source
# File lib/frypan.rb, line 168
def __calc(memo0, memo1, memo2)
  if @arg_signals.all?{|sig| sig.__same(memo0, memo1)}
    memo0.merge(self => memo1[self])
  else
    memo0.merge(self => @proc.call(*@arg_signals.map{|sig| memo0[sig]}))
  end
end
__pull_deps(memo0, memo1, memo2) click to toggle source
# File lib/frypan.rb, line 164
def __pull_deps(memo0, memo1, memo2)
  @arg_signals.inject(memo0){|acc, sig| sig.__pull(acc, memo1, memo2)}
end