Safe Haskell | None |
---|---|
Language | Haskell2010 |
The axiom
runs a backtracking algebra. The name comes from Robert
Giegerichs ADP
where axiom
runs the fully formed algorithm.
Synopsis
- class Axiom t where
- type AxiomStream t :: *
- type AxiomIx t :: *
- axiom :: t -> AxiomStream t
- axiomAt :: t -> AxiomIx t -> AxiomStream t
Documentation
The Axiom type class
type AxiomStream t :: * Source #
The corresponding stream being returned by axiom
Index type when running the axiom
axiom :: t -> AxiomStream t Source #
Given a table, run the axiom
axiomAt :: t -> AxiomIx t -> AxiomStream t Source #
Given a table and index, run the axiom from the index on. This is useful for scanning type algorithms that need to return all locally optimal structures, as a locally optimal may start at any given index.
Instances
(Monad mB, IndexStream i, i ~ j, m ~ mB) => Axiom (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type type AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # type AxiomIx (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # axiom :: TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # axiomAt :: TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomIx (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) -> AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
(Monad mB, PrimArrayOps arr i x, IndexStream i, j ~ i, m ~ mB) => Axiom (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | We need this somewhat annoying instance construction ( |
Defined in ADP.Fusion.Core.SynVar.Array.Type type AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # type AxiomIx (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # axiom :: TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # axiomAt :: TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomIx (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) -> AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
(Monad m, IndexStream i) => Axiom (TwIRec m c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
(Monad m, PrimArrayOps arr i x, IndexStream i) => Axiom (TwITbl b s m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type type AxiomStream (TwITbl b s m arr c i x) :: Type Source # |