Full rewrite re-expressing Evaluatable as a monad, where the abilities of datasets (evaluating default arguments, overloading, caching, side-effects) have been broken out into separate concepts that can be composed. Some highlights
Evaluatables can be piped through transformations using .apply or >>
Any Evaluatable can be cached using cached(evaluatable, cache)
Any Evaluatable can be overloaded using Overloaded(dispatch, overloads_dict, default)
Any Evaluatable can have side-effects using Computation(evaluatable, effects)
Pipelines have been re-imagined as Evaluatables that return a function of a single value
Pipelines are now composed using the '+' operator
Pipelines can be applied to an Evaluatable using the >> operator
Full rewrite re-expressing
Evaluatable
as a monad, where the abilities of datasets (evaluating default arguments, overloading, caching, side-effects) have been broken out into separate concepts that can be composed. Some highlightsEvaluatable
s can be piped through transformations using.apply
or>>
Evaluatable
can be cached usingcached(evaluatable, cache)
Evaluatable
can be overloaded usingOverloaded(dispatch, overloads_dict, default)
Evaluatable
can have side-effects usingComputation(evaluatable, effects)
Evaluatable
s that return a function of a single valueEvaluatable
using the>>
operator