cflp-2009.1.19: Constraint Functional-Logic Programming in Haskell

Control.CFLP

Documentation

class (MonadUpdate s m, Update s m m, ChoiceStore s) => CFLP s m Source

Instances

CFLP ChoiceStoreIM (UpdateT ChoiceStoreIM []) 

type CS = ChoiceStoreIMSource

data UpdateT s m a Source

Instances

MonadPlus m => MonadUpdate s (UpdateT s m) 
CFLP ChoiceStoreIM (UpdateT ChoiceStoreIM []) 
MonadPlus m => Update s (UpdateT s m) m 
MonadPlus m => Update s (UpdateT s m) (UpdateT s m) 
MonadTrans (UpdateT s) 
Monad m => Monad (UpdateT s m) 
Show (HeadNormalForm cs (UpdateT cs [])) 
MonadPlus m => MonadPlus (UpdateT s m) 
Show a => Show (UpdateT s [] a) 
Show (Nondet cs (UpdateT cs []) a) 

class ChoiceStore s Source

Instances

ChoiceStore ChoiceStoreIM 

type Computation m a = Context CS -> ID -> Nondet CS (UpdateT CS m) aSource

eval :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO [a]Source

evalPartial :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO [a]Source

evalPrint :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO ()Source

type Strategy m = forall a. m a -> [a]Source

data Nondet cs m a Source

Instances

NestLambda cs m t (Nondet cs m b -> f) => NestLambda cs m (a -> t) (Nondet cs m a -> Nondet cs m b -> f) 
NestLambda cs m (a -> b) (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
With x (Nondet cs m a) 
(cs ~ Ctx b, m ~ Mon b, MkCons b) => MkCons (Nondet cs m a -> b) 
(cs ~ C a, m ~ M a, WithUntyped a) => WithUntyped (Nondet cs m b -> a) 
LiftFun (Nondet cs m b -> f) => LiftFun (Nondet cs m a -> Nondet cs m b -> f) 
LiftFun (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
LiftFun (Nondet cs m a -> ID -> Nondet cs m b) 
LiftFun (Nondet cs m a -> Context cs -> Nondet cs m b) 
LiftFun (Nondet cs m a -> Nondet cs m b) 
Show (Nondet cs (UpdateT cs []) a) 
Show (Nondet cs [] a) 
Monad m => MkCons (Nondet cs m a) 
WithUntyped (Nondet cs m a) 

newtype Context cs Source

Constructors

Context cs 

Instances

NestLambda cs m (a -> b) (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
(cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) 
LiftFun (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
LiftFun (Nondet cs m a -> Context cs -> Nondet cs m b) 

data ID Source

Instances

NestLambda cs m (a -> b) (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
With ID a => With ID (ID -> a) 
LiftFun (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) 
LiftFun (Nondet cs m a -> ID -> Nondet cs m b) 

withUnique :: With ID a => a -> ID -> Nondet (C ID a) (M ID a) (T ID a)Source

class ChoiceStore cs => Narrow cs a whereSource

Methods

narrow :: MonadUpdate cs m => Context cs -> ID -> Nondet cs m aSource

Instances

ChoiceStore cs => Narrow cs Bool 
(ChoiceStore cs, Narrow cs a, Generic a) => Narrow cs [a] 

unknown :: (MonadUpdate cs m, Narrow cs a) => ID -> Nondet cs m aSource

oneOf :: (MonadUpdate cs m, ChoiceStore cs) => [Nondet cs m a] -> Context cs -> ID -> Nondet cs m aSource

(?) :: (MonadUpdate cs m, ChoiceStore cs) => Nondet cs m a -> Nondet cs m a -> ID -> Nondet cs m aSource

withHNF :: Update cs m m => Nondet cs m a -> (HeadNormalForm cs m -> Context cs -> Nondet cs m b) -> Context cs -> Nondet cs m bSource

caseOf :: Update cs m m => Nondet cs m a -> [Match a cs m b] -> Context cs -> Nondet cs m bSource

caseOf_ :: Update cs m m => Nondet cs m a -> [Match a cs m b] -> Nondet cs m b -> Context cs -> Nondet cs m bSource

data Match a cs m b Source

Instances

(cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) 

class Generic a whereSource

Methods

genericOps :: GenericOps aSource

constr :: Int -> GenericOps aSource

Instances

Generic Bool 
Generic a => Generic [a] 
(Generic a, Generic b) => Generic (a -> b) 

nondet :: (Update cs m m, Generic a) => a -> Nondet cs m aSource

class ApplyCons a whereSource

Associated Types

type Result a Source

Methods

applyCons :: a -> [NormalForm] -> Result aSource

Instances

ApplyCons Bool 
ApplyCons [a] 
(Generic a, ApplyCons b) => ApplyCons (a -> b) 

(!) :: (Int -> GenericOps a) -> (Int -> GenericOps a) -> Int -> GenericOps aSource

cons :: ApplyCons a => String -> a -> Decons a -> Int -> GenericOps (Result a)Source

groundNormalForm :: Update cs m m' => Nondet cs m a -> Context cs -> m' NormalFormSource

partialNormalForm :: (Update cs m m', ChoiceStore cs) => Nondet cs m a -> Context cs -> m' NormalFormSource

data ConsPatList a b Source

Constructors

a :! b 

Instances

(cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) 
(MkCons a, ConsList b) => ConsList (ConsPatList a b) 

constructors :: (ConsList a, Generic (CData a)) => aSource

patterns :: (PatternList a, Generic (PData a)) => aSource

apply :: Update cs m m => Nondet cs m (a -> b) -> Nondet cs m a -> Context cs -> ID -> Nondet cs m bSource

fun :: (Monad m, LiftFun f, NestLambda cs m t (Lift f)) => f -> Nondet cs m tSource