Module: TinyFRP

Defined in:
lib/tiny_frp.rb,
lib/tiny_frp/version.rb

Defined Under Namespace

Classes: Bundle, Composite, Foldp, Lift, Node

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.loop(node, &proc) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/tiny_frp.rb', line 11

def self.loop(node, &proc)
  last_memo = {}
  loop {
    memo = node.call({}, last_memo)
    proc.call(*memo[node])
    last_memo = memo
  }
end

.process(node, n) ⇒ Object



4
5
6
7
8
9
# File 'lib/tiny_frp.rb', line 4

def self.process(node, n)
  n.times.inject(res: [], last_memo: {}){|acc|
    memo = node.call({}, acc[:last_memo])
    {res: acc[:res] + [memo[node]], last_memo: memo}
  }[:res]
end