-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Constraint Functional-Logic Programming in Haskell -- -- This package provides combinators for constraint functional-logic -- programming ((C)FLP) in Haskell. The combinators might later be used -- as a target language for compiling programs written in an FLP language -- like Curry or Toy. Another application of FLP is demand driven -- test-case generation. @package cflp @version 0.2.2 module Control.CFLP class (MonadConstr Choice m, ConstraintStore Choice cs, ChoiceStore cs, MonadSolve cs m m) => CFLP cs m class ChoiceStore cs type Computation m a = CS -> ID -> Nondet CS (ConstrT CS m) a eval :: (CFLP CS m, MonadSolve CS m m', Data a) => Strategy m' -> (CS -> ID -> Nondet CS m a) -> IO [a] evalPartial :: (CFLP CS m, MonadSolve CS m m', Data a) => Strategy m' -> (CS -> ID -> Nondet CS m a) -> IO [a] evalPrint :: (CFLP CS m, MonadSolve CS m m', Data a, Show a) => Strategy m' -> (CS -> ID -> Nondet CS m a) -> IO () type Strategy m = forall a. m a -> [a] depthFirst :: Strategy [] data NormalForm data Nondet cs m a data ID initID :: IO ID withUnique :: (With ID a) => a -> ID -> Nondet (C ID a) (M ID a) (T ID a) class (ChoiceStore cs) => Narrow cs a narrow :: (Narrow cs a, MonadConstr Choice m) => cs -> ID -> Nondet cs m a unknown :: (MonadConstr Choice m, Narrow cs a) => ID -> Nondet cs m a failure :: (MonadPlus m) => Nondet cs m a oneOf :: (MonadConstr Choice m, ChoiceStore cs) => [Nondet cs m a] -> cs -> ID -> Nondet cs m a (?) :: (MonadConstr Choice m, ChoiceStore cs) => Nondet cs m a -> Nondet cs m a -> ID -> Nondet cs m a withHNF :: (Monad m, MonadSolve cs m m) => Nondet cs m a -> (HeadNormalForm cs m -> cs -> Nondet cs m b) -> cs -> Nondet cs m b caseOf :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m a -> [Match a cs m b] -> cs -> Nondet cs m b caseOf_ :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m a -> [Match a cs m b] -> Nondet cs m b -> cs -> Nondet cs m b data Match a cs m b nondet :: (Monad m, Data a) => a -> Nondet cs m a groundNormalForm :: (MonadSolve cs m m') => Nondet cs m a -> cs -> m' NormalForm partialNormalForm :: (MonadSolve cs m m', ChoiceStore cs) => Nondet cs m a -> cs -> m' NormalForm class ConsRep a consRep :: (ConsRep a) => a -> Constr cons :: (MkCons cs m a b) => a -> b match :: (ConsRep a, WithUntyped b) => a -> (C b -> b) -> Match t (C b) (M b) (T b) true :: (Monad m) => Nondet cs m Bool pTrue :: (cs -> Nondet cs m a) -> Match Bool cs m a false :: (Monad m) => Nondet cs m Bool pFalse :: (cs -> Nondet cs m a) -> Match Bool cs m a not :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m Bool -> cs -> Nondet cs m Bool (===) :: (MonadSolve cs m m) => Nondet cs m a -> Nondet cs m a -> cs -> Nondet cs m Bool nil :: (Monad m) => Nondet cs m [a] pNil :: (cs -> Nondet cs m b) -> Match [a] cs m b (^:) :: (Monad m) => Nondet cs m a -> Nondet cs m [a] -> Nondet cs m [a] pCons :: (cs -> Nondet cs m a -> Nondet cs m [a] -> Nondet cs m b) -> Match [a] cs m b fromList :: (Monad m) => [Nondet cs m a] -> Nondet cs m [a] null :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m [a] -> cs -> Nondet cs m Bool head :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m [a] -> cs -> Nondet cs m a tail :: (MonadSolve cs m m, MonadConstr Choice m) => Nondet cs m [a] -> cs -> Nondet cs m [a] instance CFLP ChoiceStoreUnique (ConstrT ChoiceStoreUnique [])