Module: Funk

Defined in:
lib/funk.rb,
lib/funk/fn.rb,
lib/funk/graph.rb,
lib/funk/result.rb,
lib/funk/version.rb,
lib/funk/input_fn.rb,
lib/funk/evaluators/eager.rb,
lib/funk/instruments/timings.rb,
lib/funk/instruments/graph_viz.rb,
lib/funk/missing_dependencies_exception.rb

Defined Under Namespace

Modules: Evaluators, Instruments Classes: Fn, Graph, InputFn, MissingDependenciesException, Result

Constant Summary collapse

VERSION =
"0.1.0"
NO_INPUT_PROVIDED =
Object.new

Class Method Summary collapse

Class Method Details

.compile(fns, strategy: Funk::Evaluators::Eager, instruments: []) ⇒ Object



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

def self.compile(fns, strategy: Funk::Evaluators::Eager, instruments: [])
  graph = Graph.new(fns)
  strategy.new(graph, instruments: instruments)
end

.compile_module(mod, **args) ⇒ Object



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

def self.compile_module(mod, **args)
  dummy_receiver = Object.new
  fn_hash = mod.instance_methods(false).each_with_object({}) do |meth, hash|
    m = mod.instance_method(meth)
    hash[meth] = m.bind(dummy_receiver)
  end
  compile(fn_hash, **args)
end