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