ADPfusion-0.5.2.2: Efficient, high-level dynamic programming.

Safe HaskellNone
LanguageHaskell2010

ADP.Fusion.SynVar.Axiom

Description

The axiom runs a backtracking algebra. The name comes from Robert Giegerichs ADP where axiom runs the fully formed algorithm.

Synopsis

Documentation

class Axiom t where Source #

The Axiom type class

Minimal complete definition

axiom

Associated Types

type AxiomStream t :: * Source #

The corresponding stream being returned by axiom

Methods

axiom :: t -> AxiomStream t Source #

Given a table, run the axiom

Instances

(Monad mB, PrimArrayOps arr i x, IndexStream i, (~) * j i, (~) (* -> *) m mB) => Axiom (TW (Backtrack (TwITbl mF arr c i x) mF mB) (j -> j -> m [r])) Source #

We need this somewhat annoying instance construction (i ~ j and m ~ mB) in order to force selection of this instance.

Associated Types

type AxiomStream (TW (Backtrack (TwITbl mF arr c i x) mF mB) (j -> j -> m [r])) :: * Source #

Methods

axiom :: TW (Backtrack (TwITbl mF arr c i x) mF mB) (j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwITbl mF arr c i x) mF mB) (j -> j -> m [r])) Source #

(Monad mB, IndexStream i, (~) * i j, (~) (* -> *) m mB) => Axiom (TW (Backtrack (TwIRec mF c i x) mF mB) (j -> j -> m [r])) Source # 

Associated Types

type AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (j -> j -> m [r])) :: * Source #

Methods

axiom :: TW (Backtrack (TwIRec mF c i x) mF mB) (j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (j -> j -> m [r])) Source #

(Monad m, IndexStream i) => Axiom (TwIRec m c i x) Source # 

Associated Types

type AxiomStream (TwIRec m c i x) :: * Source #

Methods

axiom :: TwIRec m c i x -> AxiomStream (TwIRec m c i x) Source #

(Monad m, PrimArrayOps arr i x, IndexStream i) => Axiom (TwITbl m arr c i x) Source # 

Associated Types

type AxiomStream (TwITbl m arr c i x) :: * Source #

Methods

axiom :: TwITbl m arr c i x -> AxiomStream (TwITbl m arr c i x) Source #