pire-0.2.5

Copyright(c) Andreas Reuleaux 2015 - 2018
LicenseBSD2
MaintainerAndreas Reuleaux <rx@a-rx.info>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

SInfer

Description

size inference for Pire

Documentation

liftEither :: MonadError e m => Either e a -> m a Source #

szOf :: Size a -> Size a Source #

(@.) :: (MonadError (SizeError t) m, Ord t) => Size t -> Size t -> m (Size t) infixl 9 Source #

(@@:) :: (MonadError (SizeError t) m, Ord t, SSubstitutable t a) => (a, Size t) -> Size t -> m (a, Size t) infixl 9 Source #

(@:) :: (MonadError (SizeError t) m, Ord t, SSubstitutable t b) => (SSubst t, b, Size t) -> Size t -> m (SSubst t, b, Size t) infixl 9 Source #

sv_ :: Size a -> a Source #

extra :: Size a -> [Size a] Source #

newpas :: (IsString b, Semigroup b) => [(Eps, b, Maybe a)] -> [(Eps, b, Maybe a)] -> Size b -> [(Eps, b, Maybe a)] Source #

tl :: Size a -> Size a Source #

type My a = (Pretty a, Show a, IsString a, Semigroup a, Ord a, Eq a) Source #

type MyPP a = (Pretty (Size a), Pretty (Expr a a), Pretty (Ctx a a), Pretty (Pattern a), Pretty (SSubst a), Pretty (SEnv a a), Pretty (Arg a a)) Source #

check :: (Eq t, MyPP t, MonadError (SizeError t) m, MonadState Unique m, Letters t, Pretty t, Ord t) => SEnv t t -> Size t -> Expr t t -> m () Source #

check_ :: (My a, Ord a, MonadError (SizeError a) m, MonadState Unique m, MyPP a, Letters a, MonadReader Config m) => SEnv a a -> Size a -> Expr a a -> m (Size a) Source #

_inferE :: (Eq a, Pretty (Size a), MonadError (SizeError a) m, Pretty a, Ord a, MyPP a, MonadState Unique m, Letters a) => SEnv a a -> Expr a a -> m (Size a) Source #

inferE :: (My a, MyPP a, Pretty a, IsString a, MonadError (SizeError a) m, Letters a, MonadState Unique m) => SEnv a a -> Expr a a -> m (Expr a a, Size a) Source #

inferA :: (Show a, IsString a, Semigroup a, Ord a, Pretty a, Pretty (Expr a a), Pretty (Ctx a a), Pretty (SSubst a), Pretty (SEnv a a), Pretty (Arg a a), Pretty (Size a), Pretty (Pattern a), MonadError (SizeError a) m, Letters a, MonadState Unique m) => SEnv a a -> Arg a a -> m (Arg a a, Size a) Source #

inferP :: (MonadError (SizeError a) m, MonadState Unique m, Letters a, My a, MyPP a) => SEnv a a -> Pattern a -> m (SSubst a, Pattern a, Size a) Source #

bindP :: (MonadState Unique m, Letters t, Ord t) => SEnv t t -> Pattern t -> m (SEnv t t) Source #

inferM :: (MonadError (SizeError a) m, Pretty (Size a), MyPP a, My a, Letters a, MonadState Unique m) => SEnv a a -> Match a a -> m (Match a a, Size a) Source #

inferD :: (My a, MyPP a, MonadError (SizeError a) m, Letters a, MonadState Unique m, MonadReader Config m) => SEnv a a -> Decl a a -> m (Decl a a, Size a) Source #