Class: Funk::Evaluators::Eager

Inherits:
Object
  • Object
show all
Defined in:
lib/funk/evaluators/eager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(graph, instruments: []) ⇒ Eager

Returns a new instance of Eager.



8
9
10
# File 'lib/funk/evaluators/eager.rb', line 8

def initialize(graph, instruments: [])
  @graph, @instruments = graph, instruments
end

Instance Attribute Details

#graphObject (readonly)

Returns the value of attribute graph.



6
7
8
# File 'lib/funk/evaluators/eager.rb', line 6

def graph
  @graph
end

Instance Method Details

#call(input) ⇒ Object



12
13
14
15
16
17
# File 'lib/funk/evaluators/eager.rb', line 12

def call(input)
  instruments = @instruments.map{ |i| i.new }
  @graph.tsort.each_with_object(Result.new(instruments)) do |fn, result|
    result[fn.name] = evaluate(fn, result.merge(input), instruments)
  end
end