class Frypan::Signal

Signal : Abstraction of time-varing value


Public Class Methods

async_input(buf_size=1, &proc) click to toggle source
# File lib/frypan.rb, line 46
def self.async_input(buf_size=1, &proc)
  InputThread.new(buf_size, &proc)[0]
end
const(val) click to toggle source

Utility Class methods (public to library-user)


# File lib/frypan.rb, line 38
def self.const(val)
  Const.new(val)
end
foldp(init_state, *arg_signals, &proc) click to toggle source
# File lib/frypan.rb, line 54
def self.foldp(init_state, *arg_signals, &proc)
  Foldp.new(init_state, *arg_signals, &proc)
end
input(&proc) click to toggle source
# File lib/frypan.rb, line 42
def self.input(&proc)
  Input.new(&proc)
end
lift(*arg_signals, &proc) click to toggle source
# File lib/frypan.rb, line 50
def self.lift(*arg_signals, &proc)
  Lift.new(*arg_signals, &proc)
end

Public Instance Methods

__pull(memo0, memo1, memo2) click to toggle source

Implementation of each Signals (library-user need not understand)


# File lib/frypan.rb, line 76
def __pull(memo0, memo1, memo2)
  if memo0.has_key?(self)
    memo0
  else
    __calc(__pull_deps(memo0, memo1, memo2), memo1, memo2)
  end
end
__pull_deps(memo0, memo1, memo2) click to toggle source
# File lib/frypan.rb, line 84
def __pull_deps(memo0, memo1, memo2)
  memo0
end
__same(memo_a, memo_b) click to toggle source
# File lib/frypan.rb, line 88
def __same(memo_a, memo_b)
  memo_a.has_key?(self) && memo_b.has_key?(self) && memo_a[self] == memo_b[self]
end
foldp(init_state, &proc) click to toggle source
# File lib/frypan.rb, line 69
def foldp(init_state, &proc)
  Foldp.new(init_state, self, &proc)
end
lift(&proc) click to toggle source
# File lib/frypan.rb, line 65
def lift(&proc)
  Lift.new(self, &proc)
end
method_missing(name, *args, &proc) click to toggle source

Utility Instance methods (public to library-user)


# File lib/frypan.rb, line 61
def method_missing(name, *args, &proc)
  Lift.new(self){|a| a.send(name, *args, &proc)}
end