package toolkit
- Alphabetic
- Public
- Protected
Type Members
- class BFSSolver[Prg, S, M[_], C, A] extends AnyRef
- sealed abstract class BranchLang[Ref[_], K[_], A] extends AnyRef
- class BranchingListModule[Var0[_[_], _], Val0[_[_], _], Lang[_[_], _], State0[_[_]]] extends ListModule[Lang, State0] with BranchingModule
- trait BranchingModule extends Module
- trait BranchingToolkit extends RefToolkit with StashToolkit
- sealed trait CostLang[C, K[_], A] extends AnyRef
- class CostListModule[C, Lang[_[_], _], State0[_[_]]] extends ListModule[Lang, State0] with CostModule[C]
- trait CostModule[C] extends Module
- trait CostRefToolkit[C] extends CostToolkit[C] with RefToolkit
- trait CostToolkit[C] extends Toolkit
- class DFSSolver[Prg, S, M[_], A] extends AnyRef
- sealed trait DeferLang[D, K[_], A] extends AnyRef
- class DeferListModule[D, Lang[_[_], _], State0[_[_]]] extends ListModule[Lang, State0] with StashDeferModule[D]
- trait DeferModule[D] extends Module
- trait FreeBranchingToolkit extends FreeRefToolkit with FreeStashToolkit with BranchingToolkit
- trait FreeOnDemandPropagationToolkit extends FreePropagationToolkit with OnDemandPropagationToolkit
- trait FreePropagationToolkit extends FreeRefToolkit with PropagationToolkit
- trait FreeRefToolkit extends FreeToolkit with RefToolkit
- trait FreeStashToolkit extends FreeToolkit with StashToolkit
- trait FreeToolkit extends Toolkit
A Toolkit whose representation of a program (Toolkit.Prg) is a free monad over some algebra (FreeToolkit.Lang).
A Toolkit whose representation of a program (Toolkit.Prg) is a free monad over some algebra (FreeToolkit.Lang).
FreeToolkit is typically created by composing multiple Modules.
- class ListModule[Lang0[_[_], _], State0[_[_]]] extends StashModule
- trait Module extends AnyRef
Module bridges three levels of abstraction:
Module bridges three levels of abstraction:
- _API._ Client code is written against an (MTL-style) API. What API a module provides is module-specific. For example, PropagationModule provides the nutcracker.Propagation API.
- _Instruction set._ Low-level instructions which are able to express all of the API operations. We define _program_ as the free monad over (a superset of) the instruction set. We consider a variation of free monads, util.FreeK, where the instructions can talk about (the type of) programs in which they are embedded. In the simplest case, there is a one-to-one mapping between the API operations and instructions. There are cases, however, when an API operation has to be split into multiple instructions.
- _Interpreter._ Interprets (free) programs in terms of state transitions.
- class OnDemandPropagationListModule[Var0[_[_], _], Val0[_[_], _], Lang0[_[_], _], State0[_[_]]] extends PropagationListModule[Var0, Val0, Lang0, State0] with StashOnDemandPropagationModule
- trait OnDemandPropagationModule extends PropagationModule
- trait OnDemandPropagationToolkit extends PropagationToolkit
- trait PersistentBranchingModule extends BranchingModule with PersistentStateModule
- trait PersistentCostModule[C] extends CostModule[C] with PersistentStateModule
- trait PersistentDeferModule[D] extends DeferModule[D] with PersistentStateModule
- trait PersistentOnDemandPropagationModule extends OnDemandPropagationModule with PersistentPropagationModule
- trait PersistentPropagationModule extends PropagationModule with PersistentStateModule
- trait PersistentRelModule extends RelModule with PersistentStateModule
- trait PersistentStateModule extends Module
- final class PropBranchCost[C] extends PropBranchCostToolkit[C] with FreePropagationToolkit with FreeBranchingToolkit
- trait PropBranchCostToolkit[C] extends PropBranchToolkit with CostRefToolkit[C]
- trait PropBranchToolkit extends PropagationToolkit with BranchingToolkit
- trait PropRelToolkit extends OnDemandPropagationToolkit with RelToolkit
- class PropagationListModule[Var0[_[_], _], Val0[_[_], _], Lang0[_[_], _], State0[_[_]]] extends ListModule[Lang0, State0] with StashPropagationModule
- trait PropagationModule extends Module
- trait PropagationToolkit extends RefToolkit
- trait RefToolkit extends Toolkit
Extends Toolkit with a notion of observable (RefToolkit.Val) and writable (RefToolkit.Var) cells, (potentially) residing inside RefToolkit.State.
- trait RelModule extends Module
- trait RelToolkit extends Toolkit
- trait StashDeferModule[D] extends DeferModule[D] with StashModule
- trait StashModule extends Module
- trait StashOnDemandPropagationModule extends OnDemandPropagationModule with StashPropagationModule
- trait StashPropagationModule extends PropagationModule with StashModule
- trait StashRelModule extends RelModule with StashModule
- trait StashRestore[S] extends AnyRef
- trait StashToolkit extends Toolkit
When StashToolkit.State is not a persistent data structure, it might still provide a way to remember the current state (as if push on the stack) and return to it later (as if pop off the stack).
When StashToolkit.State is not a persistent data structure, it might still provide a way to remember the current state (as if push on the stack) and return to it later (as if pop off the stack). StashToolkit is a Toolkit that supports such operations on Toolkit.State.
- trait Toolkit extends AnyRef
Provides implementations of multiple APIs.
Provides implementations of multiple APIs. The specific APIs provided by a Toolkit are defined in subclasses, such as PropagationToolkit, BranchingToolkit, RelToolkit, etc.
The unifying feature across all provided APIs is that programs written against those APIs can be represented by a type Toolkit.Prg, which is at least a monad. Such programs can be interpreted (Toolkit.interpret[A]*) as state transitions on Toolkit.State.
Value Members
- object BranchLang
- object BranchStore extends Serializable
- object BranchingModule
- object CostLang
- object CostModule
- object DeferLang
- object DeferModule
- object FreeOnDemandPropagationToolkit
- object FreePropagationToolkit
- object InitializingCell extends Serializable
- object Module
- object OnDemandCell
- object OnDemandPropagationModule
- object OnDemandPropagationToolkit
- object PersistentBranchingModule
- object PersistentCostModule
- object PersistentDeferModule
- object PersistentOnDemandPropagationModule
- object PersistentPropagationModule
- object PersistentRelModule
- object PersistentStateModule
- object PropBranch extends FreePropagationToolkit with FreeBranchingToolkit with PropBranchToolkit
- object PropBranchCostToolkit
- object PropBranchToolkit
- object PropRel extends FreePropagationToolkit with PropRelToolkit
- object PropRelToolkit
- object PropagationModule
- object PropagationStore extends Serializable
- object PropagationToolkit
- object RelModule
- object StashModule
- object StashOnDemandPropagationModule
- object StashPropagationModule
- object StashRestore