Class: Frypan::Signal
- Inherits:
-
Object
- Object
- Frypan::Signal
- Defined in:
- lib/frypan.rb
Overview
Signal : Abstraction of time-varing value
Direct Known Subclasses
Const, Foldp, Input, InputThread, Lift
Defined Under Namespace
Classes: Const, Foldp, Input, InputThread, Lift
Class Method Summary collapse
- .async_input(buf_size = 1, &proc) ⇒ Object
-
.const(val) ⇒ Object
Utility Class methods (public to library-user) —————————————-.
- .foldp(init_state, *arg_signals, &proc) ⇒ Object
- .input(&proc) ⇒ Object
- .lift(*arg_signals, &proc) ⇒ Object
Instance Method Summary collapse
-
#__pull(memo0, memo1, memo2) ⇒ Object
Implementation of each Signals (library-user need not understand) —————————————-.
- #__pull_deps(memo0, memo1, memo2) ⇒ Object
- #__same(memo_a, memo_b) ⇒ Object
- #foldp(init_state, &proc) ⇒ Object
- #lift(&proc) ⇒ Object
-
#method_missing(name, *args, &proc) ⇒ Object
Utility Instance methods (public to library-user) —————————————-.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
Class Method Details
.async_input(buf_size = 1, &proc) ⇒ Object
46 47 48 |
# File 'lib/frypan.rb', line 46 def self.async_input(buf_size=1, &proc) InputThread.new(buf_size, &proc)[0] end |
.const(val) ⇒ Object
Utility Class methods (public to library-user)
38 39 40 |
# File 'lib/frypan.rb', line 38 def self.const(val) Const.new(val) end |
.foldp(init_state, *arg_signals, &proc) ⇒ Object
54 55 56 |
# File 'lib/frypan.rb', line 54 def self.foldp(init_state, *arg_signals, &proc) Foldp.new(init_state, *arg_signals, &proc) end |
Instance Method Details
#__pull(memo0, memo1, memo2) ⇒ Object
Implementation of each Signals (library-user need not understand)
76 77 78 79 80 81 82 |
# 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) ⇒ Object
84 85 86 |
# File 'lib/frypan.rb', line 84 def __pull_deps(memo0, memo1, memo2) memo0 end |
#__same(memo_a, memo_b) ⇒ Object
88 89 90 |
# 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 |