MagicHaskeller-0.9.7.1: Automatic inductive functional programmer by systematic search
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Search.Combinatorial

Documentation

newtype Matrix a Source #

Constructors

Mx 

Fields

Instances

Instances details
Monad Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(>>=) :: Matrix a -> (a -> Matrix b) -> Matrix b #

(>>) :: Matrix a -> Matrix b -> Matrix b #

return :: a -> Matrix a #

Functor Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fmap :: (a -> b) -> Matrix a -> Matrix b #

(<$) :: a -> Matrix b -> Matrix a #

Applicative Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

pure :: a -> Matrix a #

(<*>) :: Matrix (a -> b) -> Matrix a -> Matrix b #

liftA2 :: (a -> b -> c) -> Matrix a -> Matrix b -> Matrix c #

(*>) :: Matrix a -> Matrix b -> Matrix b #

(<*) :: Matrix a -> Matrix b -> Matrix a #

Alternative Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

empty :: Matrix a #

(<|>) :: Matrix a -> Matrix a -> Matrix a #

some :: Matrix a -> Matrix [a] #

many :: Matrix a -> Matrix [a] #

MonadPlus Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mzero :: Matrix a #

mplus :: Matrix a -> Matrix a -> Matrix a #

Search Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> Matrix a Source #

toRc :: Matrix a -> Recomp a Source #

fromMx :: Matrix a -> Matrix a Source #

toMx :: Matrix a -> Matrix a Source #

fromDB :: DBound a -> Matrix a Source #

fromDF :: [a] -> Matrix a Source #

toDF :: Matrix a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> Matrix a -> Matrix b Source #

catBags :: Matrix (Bag a) -> Matrix a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> Matrix k -> Matrix k Source #

ifDepth :: (Int -> Bool) -> Matrix a -> Matrix a -> Matrix a Source #

Delay Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

SStrategy Matrix Source # 
Instance details

Defined in MagicHaskeller.Classification

Methods

sfilter :: Relation r => (k -> k -> r) -> (Int -> Int) -> Matrix ([k], e) -> Matrix ([k], e) Source #

ofilter :: Relation r => (k -> k -> r) -> Matrix (k, e) -> Matrix (k, e) Source #

Memoable Matrix Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Show a => Show (Matrix a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

showsPrec :: Int -> Matrix a -> ShowS #

show :: Matrix a -> String #

showList :: [Matrix a] -> ShowS #

Semigroup (Matrix a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(<>) :: Matrix a -> Matrix a -> Matrix a #

sconcat :: NonEmpty (Matrix a) -> Matrix a #

stimes :: Integral b => b -> Matrix a -> Matrix a #

Monoid (Matrix a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mempty :: Matrix a #

mappend :: Matrix a -> Matrix a -> Matrix a #

mconcat :: [Matrix a] -> Matrix a #

(/\) :: Monad m => (a -> m b) -> (t -> m a) -> t -> m b Source #

(\/) :: MonadPlus m => (t -> m a) -> (t -> m a) -> t -> m a Source #

newtype Recomp a Source #

Constructors

Rc 

Fields

Instances

Instances details
Monad Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(>>=) :: Recomp a -> (a -> Recomp b) -> Recomp b #

(>>) :: Recomp a -> Recomp b -> Recomp b #

return :: a -> Recomp a #

Functor Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fmap :: (a -> b) -> Recomp a -> Recomp b #

(<$) :: a -> Recomp b -> Recomp a #

Applicative Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

pure :: a -> Recomp a #

(<*>) :: Recomp (a -> b) -> Recomp a -> Recomp b #

liftA2 :: (a -> b -> c) -> Recomp a -> Recomp b -> Recomp c #

(*>) :: Recomp a -> Recomp b -> Recomp b #

(<*) :: Recomp a -> Recomp b -> Recomp a #

Alternative Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

empty :: Recomp a #

(<|>) :: Recomp a -> Recomp a -> Recomp a #

some :: Recomp a -> Recomp [a] #

many :: Recomp a -> Recomp [a] #

MonadPlus Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mzero :: Recomp a #

mplus :: Recomp a -> Recomp a -> Recomp a #

Search Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> Recomp a Source #

toRc :: Recomp a -> Recomp a Source #

fromMx :: Matrix a -> Recomp a Source #

toMx :: Recomp a -> Matrix a Source #

fromDB :: DBound a -> Recomp a Source #

fromDF :: [a] -> Recomp a Source #

toDF :: Recomp a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> Recomp a -> Recomp b Source #

catBags :: Recomp (Bag a) -> Recomp a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> Recomp k -> Recomp k Source #

ifDepth :: (Int -> Bool) -> Recomp a -> Recomp a -> Recomp a Source #

Delay Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Memoable Matrix Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Show (Recomp a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

showsPrec :: Int -> Recomp a -> ShowS #

show :: Recomp a -> String #

showList :: [Recomp a] -> ShowS #

Semigroup (Recomp a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(<>) :: Recomp a -> Recomp a -> Recomp a #

sconcat :: NonEmpty (Recomp a) -> Recomp a #

stimes :: Integral b => b -> Recomp a -> Recomp a #

Monoid (Recomp a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mempty :: Recomp a #

mappend :: Recomp a -> Recomp a -> Recomp a #

mconcat :: [Recomp a] -> Recomp a #

newtype RecompT m a Source #

Constructors

RcT 

Fields

Instances

Instances details
(Functor m, Monad m) => Monad (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(>>=) :: RecompT m a -> (a -> RecompT m b) -> RecompT m b #

(>>) :: RecompT m a -> RecompT m b -> RecompT m b #

return :: a -> RecompT m a #

Functor f => Functor (RecompT f) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fmap :: (a -> b) -> RecompT f a -> RecompT f b #

(<$) :: a -> RecompT f b -> RecompT f a #

(Functor m, Monad m) => Applicative (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

pure :: a -> RecompT m a #

(<*>) :: RecompT m (a -> b) -> RecompT m a -> RecompT m b #

liftA2 :: (a -> b -> c) -> RecompT m a -> RecompT m b -> RecompT m c #

(*>) :: RecompT m a -> RecompT m b -> RecompT m b #

(<*) :: RecompT m a -> RecompT m b -> RecompT m a #

(Functor m, Monad m) => Alternative (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

empty :: RecompT m a #

(<|>) :: RecompT m a -> RecompT m a -> RecompT m a #

some :: RecompT m a -> RecompT m [a] #

many :: RecompT m a -> RecompT m [a] #

(Functor m, Monad m) => MonadPlus (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mzero :: RecompT m a #

mplus :: RecompT m a -> RecompT m a -> RecompT m a #

(Functor m, Monad m) => Search (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> RecompT m a Source #

toRc :: RecompT m a -> Recomp a Source #

fromMx :: Matrix a -> RecompT m a Source #

toMx :: RecompT m a -> Matrix a Source #

fromDB :: DBound a -> RecompT m a Source #

fromDF :: [a] -> RecompT m a Source #

toDF :: RecompT m a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> RecompT m a -> RecompT m b Source #

catBags :: RecompT m (Bag a) -> RecompT m a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> RecompT m k -> RecompT m k Source #

ifDepth :: (Int -> Bool) -> RecompT m a -> RecompT m a -> RecompT m a Source #

Monad m => Delay (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

delay :: RecompT m a -> RecompT m a Source #

ndelay :: Int -> RecompT m a -> RecompT m a Source #

getDepth :: RecompT m Int Source #

(Functor m, Monad m) => Semigroup (RecompT m a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(<>) :: RecompT m a -> RecompT m a -> RecompT m a #

sconcat :: NonEmpty (RecompT m a) -> RecompT m a #

stimes :: Integral b => b -> RecompT m a -> RecompT m a #

(Functor m, Monad m) => Monoid (RecompT m a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mempty :: RecompT m a #

mappend :: RecompT m a -> RecompT m a -> RecompT m a #

mconcat :: [RecompT m a] -> RecompT m a #

class (Delay m, MonadPlus m, Functor m) => Search m where Source #

Minimal complete definition

fromRc, toRc, fromMx, toMx, fromDB, fromDF, toDF, mapDepth, ifDepth

Methods

fromRc :: Recomp a -> m a Source #

toRc :: m a -> Recomp a Source #

fromMx :: Matrix a -> m a Source #

toMx :: m a -> Matrix a Source #

fromDB :: DBound a -> m a Source #

fromDF :: [a] -> m a Source #

toDF :: m a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> m a -> m b Source #

mapDepth applies a function to the bag at each depth.

catBags :: m (Bag a) -> m a Source #

catBags flattens each bag.

mergesortDepthWithBy Source #

Arguments

:: (k -> k -> k)

Combiner, which is used when there are equivalent elements (compared by the comparer specified by the next argument). The return value of this combiner should also be equivalent to the two arguments.

-> (k -> k -> Ordering)

Comparer

-> m k 
-> m k 

mergesortDepthWithBy converts bags to sets, by (possibly sorting each bag and) removing duplicates. Efficiency on lists with lots of duplicates is required.

ifDepth :: (Int -> Bool) -> m a -> m a -> m a Source #

Instances

Instances details
Search DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> DBound a Source #

toRc :: DBound a -> Recomp a Source #

fromMx :: Matrix a -> DBound a Source #

toMx :: DBound a -> Matrix a Source #

fromDB :: DBound a -> DBound a Source #

fromDF :: [a] -> DBound a Source #

toDF :: DBound a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> DBound a -> DBound b Source #

catBags :: DBound (Bag a) -> DBound a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> DBound k -> DBound k Source #

ifDepth :: (Int -> Bool) -> DBound a -> DBound a -> DBound a Source #

Search Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> Recomp a Source #

toRc :: Recomp a -> Recomp a Source #

fromMx :: Matrix a -> Recomp a Source #

toMx :: Recomp a -> Matrix a Source #

fromDB :: DBound a -> Recomp a Source #

fromDF :: [a] -> Recomp a Source #

toDF :: Recomp a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> Recomp a -> Recomp b Source #

catBags :: Recomp (Bag a) -> Recomp a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> Recomp k -> Recomp k Source #

ifDepth :: (Int -> Bool) -> Recomp a -> Recomp a -> Recomp a Source #

Search Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> Matrix a Source #

toRc :: Matrix a -> Recomp a Source #

fromMx :: Matrix a -> Matrix a Source #

toMx :: Matrix a -> Matrix a Source #

fromDB :: DBound a -> Matrix a Source #

fromDF :: [a] -> Matrix a Source #

toDF :: Matrix a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> Matrix a -> Matrix b Source #

catBags :: Matrix (Bag a) -> Matrix a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> Matrix k -> Matrix k Source #

ifDepth :: (Int -> Bool) -> Matrix a -> Matrix a -> Matrix a Source #

Search Best Source # 
Instance details

Defined in Control.Monad.Search.Best

Methods

fromRc :: Recomp a -> Best a Source #

toRc :: Best a -> Recomp a Source #

fromMx :: Matrix a -> Best a Source #

toMx :: Best a -> Matrix a Source #

fromDB :: DBound a -> Best a Source #

fromDF :: [a] -> Best a Source #

toDF :: Best a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> Best a -> Best b Source #

catBags :: Best (Bag a) -> Best a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> Best k -> Best k Source #

ifDepth :: (Int -> Bool) -> Best a -> Best a -> Best a Source #

(Functor m, Monad m) => Search (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> DBoundT m a Source #

toRc :: DBoundT m a -> Recomp a Source #

fromMx :: Matrix a -> DBoundT m a Source #

toMx :: DBoundT m a -> Matrix a Source #

fromDB :: DBound a -> DBoundT m a Source #

fromDF :: [a] -> DBoundT m a Source #

toDF :: DBoundT m a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> DBoundT m a -> DBoundT m b Source #

catBags :: DBoundT m (Bag a) -> DBoundT m a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> DBoundT m k -> DBoundT m k Source #

ifDepth :: (Int -> Bool) -> DBoundT m a -> DBoundT m a -> DBoundT m a Source #

(Functor m, Monad m) => Search (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> RecompT m a Source #

toRc :: RecompT m a -> Recomp a Source #

fromMx :: Matrix a -> RecompT m a Source #

toMx :: RecompT m a -> Matrix a Source #

fromDB :: DBound a -> RecompT m a Source #

fromDF :: [a] -> RecompT m a Source #

toDF :: RecompT m a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> RecompT m a -> RecompT m b Source #

catBags :: RecompT m (Bag a) -> RecompT m a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> RecompT m k -> RecompT m k Source #

ifDepth :: (Int -> Bool) -> RecompT m a -> RecompT m a -> RecompT m a Source #

class Delay m where Source #

Minimal complete definition

getDepth

Methods

delay :: m a -> m a Source #

ndelay :: Int -> m a -> m a Source #

getDepth :: m Int Source #

Instances

Instances details
Delay DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Delay Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Delay Matrix Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Delay Best Source # 
Instance details

Defined in Control.Monad.Search.Best

Methods

delay :: Best a -> Best a Source #

ndelay :: Int -> Best a -> Best a Source #

getDepth :: Best Int Source #

Monad m => Delay (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

delay :: DBoundT m a -> DBoundT m a Source #

ndelay :: Int -> DBoundT m a -> DBoundT m a Source #

getDepth :: DBoundT m Int Source #

Monad m => Delay (RecompT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

delay :: RecompT m a -> RecompT m a Source #

ndelay :: Int -> RecompT m a -> RecompT m a Source #

getDepth :: RecompT m Int Source #

(Monad m, Delay m) => Delay (StateT s m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

delay :: StateT s m a -> StateT s m a Source #

ndelay :: Int -> StateT s m a -> StateT s m a Source #

getDepth :: StateT s m Int Source #

consMx :: Bag a -> Matrix a -> Matrix a Source #

consRc :: Bag a -> Recomp a -> Recomp a Source #

zipWithBF :: Monad m => (a -> b -> m c) -> m a -> m b -> m c Source #

printMx :: Show a => Matrix a -> IO () Source #

printNMx :: Show a => Int -> Matrix a -> IO () Source #

mapDepthDB :: DB m => (Bag (a, Int) -> Bag (b, Int)) -> m a -> m b Source #

type Bag a = [a] Source #

type Stream a = [a] Source #

cat :: [[a]] -> [a] Source #

toList :: a -> a Source #

scanl1BF :: Search m => m x -> m x Source #

zipDepthMx :: (Int -> Bag a -> Bag b) -> Matrix a -> Matrix b Source #

zipDepthRc :: (Int -> Bag a -> Bag b) -> Recomp a -> Recomp b Source #

zipDepth3Mx :: (Int -> Bag a -> Bag b -> Bag c) -> Matrix a -> Matrix b -> Matrix c Source #

zipDepth3Rc :: (Int -> Bag a -> Bag b -> Bag c) -> Recomp a -> Recomp b -> Recomp c Source #

scanlRc :: (Bag a -> Bag b -> Bag a) -> Bag a -> Recomp b -> Recomp a Source #

newtype DBound a Source #

Constructors

DB 

Fields

Instances

Instances details
Monad DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(>>=) :: DBound a -> (a -> DBound b) -> DBound b #

(>>) :: DBound a -> DBound b -> DBound b #

return :: a -> DBound a #

Functor DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fmap :: (a -> b) -> DBound a -> DBound b #

(<$) :: a -> DBound b -> DBound a #

Applicative DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

pure :: a -> DBound a #

(<*>) :: DBound (a -> b) -> DBound a -> DBound b #

liftA2 :: (a -> b -> c) -> DBound a -> DBound b -> DBound c #

(*>) :: DBound a -> DBound b -> DBound b #

(<*) :: DBound a -> DBound b -> DBound a #

Alternative DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

empty :: DBound a #

(<|>) :: DBound a -> DBound a -> DBound a #

some :: DBound a -> DBound [a] #

many :: DBound a -> DBound [a] #

MonadPlus DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mzero :: DBound a #

mplus :: DBound a -> DBound a -> DBound a #

Search DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> DBound a Source #

toRc :: DBound a -> Recomp a Source #

fromMx :: Matrix a -> DBound a Source #

toMx :: DBound a -> Matrix a Source #

fromDB :: DBound a -> DBound a Source #

fromDF :: [a] -> DBound a Source #

toDF :: DBound a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> DBound a -> DBound b Source #

catBags :: DBound (Bag a) -> DBound a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> DBound k -> DBound k Source #

ifDepth :: (Int -> Bool) -> DBound a -> DBound a -> DBound a Source #

Delay DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

DB DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mapDepthDB :: (Bag (a, Int) -> Bag (b, Int)) -> DBound a -> DBound b Source #

zipDepthDB :: (Int -> Bag (a, Int) -> Bag (b, Int)) -> DBound a -> DBound b Source #

SStrategy DBound Source # 
Instance details

Defined in MagicHaskeller.Classification

Methods

sfilter :: Relation r => (k -> k -> r) -> (Int -> Int) -> DBound ([k], e) -> DBound ([k], e) Source #

ofilter :: Relation r => (k -> k -> r) -> DBound (k, e) -> DBound (k, e) Source #

Memoable DBMemo DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Show (DBound a) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

showsPrec :: Int -> DBound a -> ShowS #

show :: DBound a -> String #

showList :: [DBound a] -> ShowS #

newtype DBoundT m a Source #

Constructors

DBT 

Fields

Instances

Instances details
(Functor m, Monad m) => Monad (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

(>>=) :: DBoundT m a -> (a -> DBoundT m b) -> DBoundT m b #

(>>) :: DBoundT m a -> DBoundT m b -> DBoundT m b #

return :: a -> DBoundT m a #

Functor f => Functor (DBoundT f) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fmap :: (a -> b) -> DBoundT f a -> DBoundT f b #

(<$) :: a -> DBoundT f b -> DBoundT f a #

(Functor m, Monad m) => Applicative (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

pure :: a -> DBoundT m a #

(<*>) :: DBoundT m (a -> b) -> DBoundT m a -> DBoundT m b #

liftA2 :: (a -> b -> c) -> DBoundT m a -> DBoundT m b -> DBoundT m c #

(*>) :: DBoundT m a -> DBoundT m b -> DBoundT m b #

(<*) :: DBoundT m a -> DBoundT m b -> DBoundT m a #

(Functor m, Monad m) => Alternative (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

empty :: DBoundT m a #

(<|>) :: DBoundT m a -> DBoundT m a -> DBoundT m a #

some :: DBoundT m a -> DBoundT m [a] #

many :: DBoundT m a -> DBoundT m [a] #

(Functor m, Monad m) => MonadPlus (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mzero :: DBoundT m a #

mplus :: DBoundT m a -> DBoundT m a -> DBoundT m a #

(Functor m, Monad m) => Search (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

fromRc :: Recomp a -> DBoundT m a Source #

toRc :: DBoundT m a -> Recomp a Source #

fromMx :: Matrix a -> DBoundT m a Source #

toMx :: DBoundT m a -> Matrix a Source #

fromDB :: DBound a -> DBoundT m a Source #

fromDF :: [a] -> DBoundT m a Source #

toDF :: DBoundT m a -> [a] Source #

mapDepth :: (Bag a -> Bag b) -> DBoundT m a -> DBoundT m b Source #

catBags :: DBoundT m (Bag a) -> DBoundT m a Source #

mergesortDepthWithBy :: (k -> k -> k) -> (k -> k -> Ordering) -> DBoundT m k -> DBoundT m k Source #

ifDepth :: (Int -> Bool) -> DBoundT m a -> DBoundT m a -> DBoundT m a Source #

Monad m => Delay (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

delay :: DBoundT m a -> DBoundT m a Source #

ndelay :: Int -> DBoundT m a -> DBoundT m a Source #

getDepth :: DBoundT m Int Source #

(Functor m, Monad m) => DB (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mapDepthDB :: (Bag (a, Int) -> Bag (b, Int)) -> DBoundT m a -> DBoundT m b Source #

zipDepthDB :: (Int -> Bag (a, Int) -> Bag (b, Int)) -> DBoundT m a -> DBoundT m b Source #

zipDepthDB :: DB m => (Int -> Bag (a, Int) -> Bag (b, Int)) -> m a -> m b Source #

newtype DBMemo a Source #

Constructors

DBM 

Fields

Instances

Instances details
Memoable DBMemo DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

class Search n => Memoable m n where Source #

Methods

tabulate :: n a -> m a Source #

applyMemo :: m a -> n a Source #

Instances

Instances details
Memoable DBMemo DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Memoable Matrix Recomp Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Memoable Best Best Source # 
Instance details

Defined in Control.Monad.Search.Best

Methods

tabulate :: Best a -> Best a Source #

applyMemo :: Best a -> Best a Source #

shrink :: (Ix b, Num b) => (a -> a -> a) -> (a -> a -> Maybe Ordering) -> b -> [(a, b)] -> [(a, b)] Source #

class Search m => DB m Source #

Minimal complete definition

mapDepthDB, zipDepthDB

Instances

Instances details
DB DBound Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mapDepthDB :: (Bag (a, Int) -> Bag (b, Int)) -> DBound a -> DBound b Source #

zipDepthDB :: (Int -> Bag (a, Int) -> Bag (b, Int)) -> DBound a -> DBound b Source #

(Functor m, Monad m) => DB (DBoundT m) Source # 
Instance details

Defined in Control.Monad.Search.Combinatorial

Methods

mapDepthDB :: (Bag (a, Int) -> Bag (b, Int)) -> DBoundT m a -> DBoundT m b Source #

zipDepthDB :: (Int -> Bag (a, Int) -> Bag (b, Int)) -> DBoundT m a -> DBoundT m b Source #

dbtToRcT :: forall (m :: Type -> Type) a. Monad m => DBoundT m a -> RecompT m a Source #