maam-0.3.0.0: Monadic Abstracting Abstract Machines (MAAM) built on Galois Transformers

Safe HaskellNone
LanguageHaskell2010

FP.Prelude.Core

Documentation

type 𝕀 = Int Source

type = Char Source

type (⨄) = Either infixr 4 Source

newtype Fold a Source

Constructors

Fold 

Fields

runFold :: forall b. (a -> b -> b) -> b -> b
 

data Stream a where Source

Constructors

Stream :: forall s a. s -> (s -> Maybe (a, s)) -> Stream a 

type 𝒮 = Seq Source

data 𝒫 a where Source

Constructors

EmptySet :: 𝒫 a 
InhabitedSet :: Ord a => Set a -> 𝒫 a 

data k v where infixr 3 Source

Constructors

EmptyDict :: k v 
InhabitedDict :: Ord k => Map k v -> k v 

Instances

Lookup k v ((⇰) k v) Source 
Functor ((⇰) k) Source 
Eq v => Eq ((⇰) k v) Source 
Ord v => Ord ((⇰) k v) Source 
(Show k, Show v) => Show ((⇰) k v) Source 
Monoid v => Monoid ((⇰) k v) Source 
Join v => JoinLattice ((⇰) k v) Source 
Difference v => Difference ((⇰) k v) Source 
Meet v => Meet ((⇰) k v) Source 
Join v => Join ((⇰) k v) Source 
Bot ((⇰) k v) Source 
POrd v => POrd ((⇰) k v) Source 
Ord k => Singleton (k, v) ((⇰) k v) Source 
ToStream (k, v) ((⇰) k v) Source 
ToFold (k, v) ((⇰) k v) Source 

newtype k ⇰♭⧺ v Source

Constructors

LazyDictAppend 

Fields

runLazyDictAppend :: Fold (k, v)
 

Instances

(Ord k, Eq v, Monoid v) => Eq ((⇰♭⧺) k v) Source 
(Ord k, Ord v, Monoid v) => Ord ((⇰♭⧺) k v) Source 
(Ord k, Show k, Show v, Monoid v) => Show ((⇰♭⧺) k v) Source 
Monoid ((⇰♭⧺) k v) Source 
Singleton (k, v) ((⇰♭⧺) k v) Source 
ToFold (k, v) ((⇰♭⧺) k v) Source 

newtype k ⇰♭⊔ v Source

Constructors

LazyDictJoin 

Fields

runLazyDictJoin :: Fold (k, v)
 

(≟) :: Eq a => a -> a -> 𝔹 infix 6 Source

(⋚) :: Ord a => a -> a -> Ordering infix 6 Source

(≤) :: Ord a => a -> a -> 𝔹 infix 6 Source

(≥) :: Ord a => a -> a -> 𝔹 infix 6 Source

minBy :: Ord b => (a -> b) -> a -> a -> a Source

maxBy :: Ord b => (a -> b) -> a -> a -> a Source

class Peano a => Additive a where Source

Methods

(+) :: a -> a -> a infixr 4 Source

class Multiplicative a => Divisible a where Source

Methods

(/) :: a -> a -> a infix 5 Source

Instances

class Multiplicative a => Exponential a where Source

Methods

(^) :: a -> a -> a infixl 8 Source

negate :: Subtractive a => a -> a Source

inverse :: Divisible a => a -> a Source

mapOn :: Functor t => t a -> (a -> b) -> t b Source

(^⋅) :: Functor t => (a -> b) -> t a -> t b infixl 9 Source

(^$) :: Functor t => (a -> b) -> t a -> t b infixr 0 Source

(^∘) :: Functor t => (b -> c) -> (a -> t b) -> a -> t c infixr 7 Source

class Functor m => Monad m where Source

Methods

return :: a -> m a Source

(≫=) :: m a -> (a -> m b) -> m b infixr 1 Source

(*⋅) :: Monad m => (a -> m b) -> m a -> m b infixl 9 Source

(*$) :: Monad m => (a -> m b) -> m a -> m b infixr 0 Source

(*∘) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c infixr 7 Source

kreturn :: Monad m => (a -> b) -> a -> m b Source

extend :: Monad m => (a -> m b) -> m a -> m b Source

(≫) :: Monad m => m a -> m b -> m b infixr 1 Source

void :: Monad m => m a -> m () Source

mjoin :: Monad m => m (m a) -> m a Source

mmap :: Monad m => (a -> b) -> m a -> m b Source

(<×>) :: Monad m => m a -> m b -> m (a, b) infixr 5 Source

(<⋅>) :: Monad m => m (a -> b) -> m a -> m b infixl 9 Source

when :: Monad m => 𝔹 -> m () -> m () Source

whenM :: Monad m => m 𝔹 -> m () -> m () Source

whenMaybe :: Monad m => Maybe a -> (a -> m ()) -> m () Source

whenMaybeM :: Monad m => m (Maybe a) -> (a -> m ()) -> m () Source

returnMaybe :: Monad m => m a -> Maybe a -> m a Source

class FunctorM t where Source

Methods

mapM :: Monad m => (a -> m b) -> t a -> m (t b) Source

mapMOn :: (FunctorM t, Monad m) => t a -> (a -> m b) -> m (t b) Source

sequence :: (FunctorM t, Monad m) => t (m a) -> m (t a) Source

(^*⋅) :: (FunctorM t, Monad m) => (a -> m b) -> t a -> m (t b) infixl 9 Source

(^*$) :: (FunctorM t, Monad m) => (a -> m b) -> t a -> m (t b) infixr 0 Source

(^*∘) :: (FunctorM t, Monad m) => (b -> m c) -> (a -> m b) -> t a -> m (t c) infixr 7 Source

class ToFold a t | t -> a where Source

Methods

fold :: t -> Fold a Source

Instances

class ToStream a t | t -> a where Source

Methods

stream :: t -> Stream a Source

class Singleton a t | t -> a where Source

Methods

single :: a -> t Source

class ToInt a where Source

Methods

𝕚 :: a -> 𝕀 Source

class Lookup k v t | t -> k, t -> v where Source

Methods

lookup :: k -> t -> Maybe v Source

Instances

Lookup k v ((⇰) k v) Source 
Unbox a => Lookup (, ) a (𝕄ᵘ a) Source 
Lookup (, ) a (𝕄 a) Source 

(#) :: Lookup k v t => t -> k -> Maybe v infixl 8 Source

(#!) :: Lookup k v t => t -> k -> v infixl 8 Source

𝕤show :: Show a => a -> 𝕊 Source

𝕤read :: Read a => 𝕊 -> a Source

(∧) :: 𝔹 -> 𝔹 -> 𝔹 infixr 5 Source

(∨) :: 𝔹 -> 𝔹 -> 𝔹 infixr 4 Source

fif :: 𝔹 -> a -> a -> a Source

elimSum :: (a -> c) -> (b -> c) -> (a b) -> c Source

mapSum :: (a -> a') -> (b -> b') -> (a b) -> a' b' Source

mapLeft :: (a -> c) -> (a b) -> c b Source

mapRight :: (b -> c) -> (a b) -> a c Source

swapSum :: (a b) -> b a Source

fst :: (a, b) -> a Source

snd :: (a, b) -> b Source

swap :: (a, b) -> (b, a) Source

mapPair :: (a -> a') -> (b -> b') -> (a, b) -> (a', b') Source

mapFst :: (a -> a') -> (a, b) -> (a', b) Source

mapSnd :: (b -> b') -> (a, b) -> (a, b') Source

id :: a -> a Source

(♯$) :: (a -> b) -> a -> b infixr 0 Source

(♯⋅) :: (a -> b) -> a -> b infixl 9 Source

(∘) :: (b -> c) -> (a -> b) -> a -> c infixr 7 Source

(∘∘) :: (c -> d) -> (a -> b -> c) -> a -> b -> d infixr 7 Source

const :: b -> a -> b Source

flip :: (a -> b -> c) -> b -> a -> c Source

curry :: ((a, b) -> c) -> a -> b -> c Source

uncurry :: (a -> b -> c) -> (a, b) -> c Source

rotateR :: (a -> b -> c -> d) -> c -> a -> b -> d Source

rotateL :: (a -> b -> c -> d) -> b -> c -> a -> d Source

mirror :: (a -> b -> c -> d) -> c -> b -> a -> d Source

on :: (b -> b -> c) -> (a -> b) -> a -> a -> c Source

elimMaybe :: b -> (a -> b) -> Maybe a -> b Source

elimMaybeOn :: Maybe a -> b -> (a -> b) -> b Source

ifNothing :: a -> Maybe a -> a Source

consFold :: a -> Fold a -> Fold a Source

foldlk :: ToFold a t => (b -> a -> (b -> b) -> b) -> b -> t -> b Source

foldlkOn :: ToFold a t => t -> b -> (b -> a -> (b -> b) -> b) -> b Source

foldl :: ToFold a t => (b -> a -> b) -> b -> t -> b Source

foldlOn :: ToFold a t => t -> b -> (b -> a -> b) -> b Source

iter :: ToFold a t => (a -> b -> b) -> b -> t -> b Source

iterOn :: ToFold a t => t -> b -> (a -> b -> b) -> b Source

foldr :: ToFold a t => (a -> b -> b) -> b -> t -> b Source

foldrOn :: ToFold a t => t -> b -> (a -> b -> b) -> b Source

sum :: (ToFold a t, Additive a) => t -> a Source

product :: (ToFold a t, Multiplicative a) => t -> a Source

concat :: (ToFold a t, Monoid a) => t -> a Source

mfoldl :: (Monad m, ToFold a t) => (b -> a -> m b) -> b -> t -> m b Source

miter :: (Monad m, ToFold a t) => (a -> b -> m b) -> b -> t -> m b Source

mfoldr :: (Monad m, ToFold a t) => (a -> b -> m b) -> b -> t -> m b Source

foreach :: (Monad m, ToFold a t) => (a -> m ()) -> t -> m () Source

foreachOn :: (Monad m, ToFold a t) => t -> (a -> m ()) -> m () Source

exec :: (Monad m, ToFold (m ()) t) => t -> m () Source

list :: ToFold a t => t -> [a] Source

set :: (ToFold a t, Ord a) => t -> 𝒫 a Source

lazySet :: ToFold a t => t -> 𝒫ᵇ a Source

dict :: (ToFold (k, v) t, Ord k) => t -> k v Source

dictAppend :: (ToFold (k, v) t, Ord k, Monoid v) => t -> k v Source

lazyDictAppend :: ToFold (k, v) t => t -> k ⇰♭⧺ v Source

isEmpty :: ToStream a t => t -> 𝔹 Source

singleList :: a -> [a] Source

cons :: a -> [a] -> [a] Source

uncons :: [a] -> Maybe (a, [a]) Source

zip :: [a] -> [b] -> Maybe [(a, b)] Source

zipAssumeSameLength :: [a] -> [b] -> [(a, b)] Source

unzip :: [(a, b)] -> ([a], [b]) Source

partition :: [a b] -> ([a], [b]) Source

reverse :: [a] -> [a] Source

elimPrimConcreteSet :: b -> (Ord a => Set a -> b) -> 𝒫 a -> b Source

elimPrimOnSet :: 𝒫 a -> b -> (Ord a => Set a -> b) -> b Source

elimPrim22Set :: c -> (Ord b => Set b -> c) -> (Ord a => Set a -> c) -> ((Ord a, Ord b) => Set a -> Set b -> c) -> 𝒫 a -> 𝒫 b -> c Source

elimPrim21Set :: b -> (Ord a => Set a -> b) -> (Ord a => Set a -> Set a -> b) -> 𝒫 a -> 𝒫 a -> b Source

learnSet :: 𝒫 a -> b -> (Ord a => b) -> b Source

learn22Set :: 𝒫 a -> 𝒫 b -> c -> (Ord b => c) -> (Ord a => c) -> ((Ord a, Ord b) => c) -> c Source

singleSet :: Ord a => a -> 𝒫 a Source

insert :: Ord a => a -> 𝒫 a -> 𝒫 a Source

unionSet :: 𝒫 a -> 𝒫 a -> 𝒫 a Source

(∈) :: a -> 𝒫 a -> 𝔹 infix 6 Source

elem :: a -> 𝒫 a -> Bool Source

elemOf :: 𝒫 a -> a -> 𝔹 Source

removeMin :: 𝒫 a -> Maybe (a, 𝒫 a) Source

removeMax :: 𝒫 a -> Maybe (a, 𝒫 a) Source

mapSet :: Ord b => (a -> b) -> 𝒫 a -> 𝒫 b Source

mapSetOn :: Ord b => 𝒫 a -> (a -> b) -> 𝒫 b Source

extendSet :: (a -> 𝒫 b) -> 𝒫 a -> 𝒫 b Source

(≫=*) :: 𝒫 a -> (a -> 𝒫 b) -> 𝒫 b infixr 1 Source

elimPrimDict :: b -> (Ord k => Map k v -> b) -> (k v) -> b Source

elimPrimOnDict :: (k v) -> b -> (Ord k => Map k v -> b) -> b Source

elimPrim22Dict :: b -> (Ord k => Map k v -> b) -> (Ord k => Map k v -> b) -> (Ord k => Map k v -> Map k v -> b) -> (k v) -> (k v) -> b Source

elimPrim21Dict :: b -> (Ord k => Map k v -> b) -> (Ord k => Map k v -> Map k v -> b) -> (k v) -> (k v) -> b Source

toPrimDict :: (k v) -> Map k v Source

learnDict :: (k v) -> b -> (Ord k => b) -> b Source

keys :: (k v) -> 𝒫 k Source

values :: (k v) -> [v] Source

type Old a = a Source

type New a = a Source

insertWithDict :: Ord k => (Old v -> New v -> v) -> k -> v -> (k v) -> k v Source

insertDict :: Ord k => k -> v -> (k v) -> k v Source

(↦) :: Ord k => k -> v -> (k, v) infixr 3 Source

removeMinDict :: (k v) -> Maybe ((k, v), k v) Source

removeMaxDict :: (k v) -> Maybe ((k, v), k v) Source

unionWithDict :: (Old v -> New v -> v) -> (k v) -> (k v) -> k v Source

unionWithDictOn :: (k v) -> (k v) -> (Old v -> New v -> v) -> k v Source

isSubdictOfBy :: (v -> v -> 𝔹) -> (k v) -> (k v) -> 𝔹 Source

intersectionWithDict :: (Old v -> New v -> v) -> (k v) -> (k v) -> k v Source

differenceWithDict :: (v -> v -> v) -> (k v) -> (k v) -> k v Source

modifyDict :: (v -> v) -> k -> (k v) -> k v Source

modifyDictOn :: k -> (v -> v) -> (k v) -> k v Source

onlyKeys :: Ord k => 𝒫 k -> (k v) -> k v Source

filterDict :: (v -> 𝔹) -> (k v) -> k v Source

mapKeyLazyDictAppend :: (k -> k') -> (k ⇰♭⧺ v) -> k' ⇰♭⧺ v Source

error :: 𝕊 -> a Source

class MonadIO m where Source

Methods

io :: IO a -> m a Source

Instances

print :: MonadIO m => 𝕊 -> m () Source

printLn :: MonadIO m => 𝕊 -> m () Source

failIO :: MonadIO m => 𝕊 -> m a Source

abortIO :: MonadIO m => m a Source

writeFile :: MonadIO m => 𝕊 -> 𝕊 -> m () Source

trace :: 𝕊 -> a -> a Source

traceM :: Monad m => 𝕊 -> m () Source

ioFailure :: (Monad m, MonadIO m) => Maybe a -> m a Source

ifThenElse :: 𝔹 -> a -> a -> a Source

fail :: [] -> m a Source

(>>=) :: Monad m => m a -> (a -> m b) -> m b infixr 1 Source

(>>) :: Monad m => m a -> m b -> m b infixr 1 Source

module Data.Char

module Data.List

module Prelude