package toolkit

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Type Members

  1. class BFSSolver[Prg, S, M[_], C, A] extends AnyRef
  2. sealed abstract class BranchLang[Ref[_], K[_], A] extends AnyRef
  3. class BranchingListModule[Var0[_[_], _], Val0[_[_], _], Lang0[_[_], _], State0[_[_]]] extends ListModule[Lang0, State0] with BranchingModule
  4. trait BranchingModule extends Module
  5. trait BranchingToolkit extends RefToolkit with StashToolkit
  6. sealed trait CostLang[C, K[_], A] extends AnyRef
  7. class CostListModule[C, Lang0[_[_], _], State0[_[_]]] extends ListModule[Lang0, State0] with CostModule[C]
  8. trait CostModule[C] extends Module
  9. trait CostRefToolkit[C] extends CostToolkit[C] with RefToolkit
  10. trait CostToolkit[C] extends Toolkit
  11. class DFSSolver[Prg, S, M[_], A] extends AnyRef
  12. sealed trait DeferLang[D, K[_], A] extends AnyRef
  13. class DeferListModule[D, Lang0[_[_], _], State0[_[_]]] extends ListModule[Lang0, State0] with StashDeferModule[D]
  14. trait DeferModule[D] extends Module
  15. trait FreeBranchingToolkit extends FreeRefToolkit with FreeStashToolkit with BranchingToolkit
  16. trait FreeOnDemandPropagationToolkit extends FreePropagationToolkit with OnDemandPropagationToolkit
  17. trait FreePropagationToolkit extends FreeRefToolkit with PropagationToolkit
  18. trait FreeRefToolkit extends FreeToolkit with RefToolkit
  19. trait FreeStashToolkit extends FreeToolkit with StashToolkit
  20. 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.

  21. class ListModule[Lang0[_[_], _], State0[_[_]]] extends StashModule
  22. 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.
  23. class OnDemandPropagationListModule[Var0[_[_], _], Val0[_[_], _], Lang0[_[_], _], State0[_[_]]] extends PropagationListModule[Var0, Val0, Lang0, State0] with StashOnDemandPropagationModule
  24. trait OnDemandPropagationModule extends PropagationModule
  25. trait OnDemandPropagationToolkit extends PropagationToolkit
  26. trait PersistentBranchingModule extends BranchingModule with PersistentStateModule
  27. trait PersistentCostModule[C] extends CostModule[C] with PersistentStateModule
  28. trait PersistentDeferModule[D] extends DeferModule[D] with PersistentStateModule
  29. trait PersistentOnDemandPropagationModule extends OnDemandPropagationModule with PersistentPropagationModule
  30. trait PersistentPropagationModule extends PropagationModule with PersistentStateModule
  31. trait PersistentRelModule extends RelModule with PersistentStateModule
  32. trait PersistentStateModule extends Module
  33. final class PropBranchCost[C] extends PropBranchCostToolkit[C] with FreePropagationToolkit with FreeBranchingToolkit
  34. trait PropBranchCostToolkit[C] extends PropBranchToolkit with CostRefToolkit[C]
  35. trait PropBranchToolkit extends PropagationToolkit with BranchingToolkit
  36. trait PropRelToolkit extends OnDemandPropagationToolkit with RelToolkit
  37. class PropagationListModule[Var0[_[_], _], Val0[_[_], _], Lang0[_[_], _], State0[_[_]]] extends ListModule[Lang0, State0] with StashPropagationModule
  38. trait PropagationModule extends Module
  39. trait PropagationToolkit extends RefToolkit
  40. trait RefToolkit extends Toolkit

    Extends Toolkit with a notion of observable (RefToolkit.Val) and writable (RefToolkit.Var) cells, (potentially) residing inside RefToolkit.State.

  41. trait RelModule extends Module
  42. trait RelToolkit extends Toolkit
  43. trait StashDeferModule[D] extends DeferModule[D] with StashModule
  44. trait StashModule extends Module
  45. trait StashOnDemandPropagationModule extends OnDemandPropagationModule with StashPropagationModule
  46. trait StashPropagationModule extends PropagationModule with StashModule
  47. trait StashRelModule extends RelModule with StashModule
  48. trait StashRestore[S] extends AnyRef
  49. 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.

  50. 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.

Ungrouped