class Frypan::Signal::Foldp
Public Class Methods
new(init_state, *arg_signals, &proc)
click to toggle source
# File lib/frypan.rb, line 178 def initialize(init_state, *arg_signals, &proc) @init_state, @arg_signals, @proc = init_state, arg_signals, proc end
Public Instance Methods
__calc(memo0, memo1, memo2)
click to toggle source
# File lib/frypan.rb, line 186 def __calc(memo0, memo1, memo2) if __same(memo1, memo2) && @arg_signals.all?{|sig| sig.__same(memo0, memo1)} memo0.merge(self => memo1[self]) else state = memo1.has_key?(self) ? memo1[self] : @init_state memo0.merge(self => @proc.call(state, *@arg_signals.map{|sig| memo0[sig]})) end end
__pull_deps(memo0, memo1, memo2)
click to toggle source
# File lib/frypan.rb, line 182 def __pull_deps(memo0, memo1, memo2) @arg_signals.inject(memo0){|acc, sig| sig.__pull(acc, memo1, memo2)} end