Safe Haskell | None |
---|---|
Language | Haskell98 |
Eval
Synopsis
- traceEta :: String -> a -> a
- traceEtaM :: Monad m => String -> m ()
- traceRecord :: String -> a -> a
- traceRecordM :: Monad m => String -> m ()
- traceMatch :: String -> a -> a
- traceMatchM :: Monad m => String -> m ()
- traceLoop :: String -> a -> a
- traceLoopM :: Monad m => String -> m ()
- traceSize :: String -> a -> a
- traceSizeM :: Monad m => String -> m ()
- failValInv :: MonadError TraceError m => Val -> m a
- class Reval a where
- vSing :: Val -> TVal -> TypeCheck TVal
- reduce :: Val -> TypeCheck Val
- equal :: Val -> Val -> TypeCheck Bool
- notDifferentNames :: RecInfo -> RecInfo -> Bool
- equals' :: [Val] -> [Val] -> TypeCheck Bool
- equal' :: Val -> Val -> TypeCheck Bool
- reify :: Val -> TypeCheck Expr
- reify' :: (Int, Bool) -> Val -> TypeCheck Expr
- toExpr :: Val -> TypeCheck Expr
- addNameEnv :: Name -> Env -> (Name -> Env -> TypeCheck a) -> TypeCheck a
- addPatternEnv :: Pattern -> Env -> (Pattern -> Env -> TypeCheck a) -> TypeCheck a
- addPatternsEnv :: [Pattern] -> Env -> ([Pattern] -> Env -> TypeCheck a) -> TypeCheck a
- class ClosToExpr a where
- closToExpr :: Env -> a -> TypeCheck a
- bindClosToExpr :: Env -> a -> (Env -> a -> TypeCheck b) -> TypeCheck b
- metaToExpr :: Int -> Env -> Int -> TypeCheck Expr
- clauseToExpr :: Env -> Clause -> TypeCheck Clause
- whnf :: Env -> Expr -> TypeCheck Val
- whnfMeasure :: Env -> Measure Expr -> TypeCheck (Measure Val)
- whnfSort :: Env -> Sort Expr -> TypeCheck (Sort Val)
- whnfClos :: Clos -> TypeCheck Val
- whnf' :: Expr -> TypeCheck Val
- sing :: Env -> Expr -> TVal -> TypeCheck TVal
- sing' :: Expr -> TVal -> TypeCheck TVal
- evalCase :: Val -> TVal -> Env -> [Clause] -> TypeCheck Val
- piApp :: TVal -> Clos -> TypeCheck TVal
- piApps :: TVal -> [Clos] -> TypeCheck TVal
- updateValu :: Valuation -> Int -> Val -> TypeCheck Valuation
- app :: Val -> Clos -> TypeCheck Val
- app' :: Bool -> Val -> Clos -> TypeCheck Val
- force' :: Bool -> Val -> TypeCheck (Bool, Val)
- force :: Val -> TypeCheck Val
- appDef :: QName -> [Val] -> TypeCheck Val
- up :: Bool -> Val -> TVal -> TypeCheck Val
- matchingConstructors :: Val -> TypeCheck (Maybe [(ConstructorInfo, Env)])
- matchingConstructors' :: QName -> [Val] -> TypeCheck [(ConstructorInfo, Env)]
- matchingConstructors'' :: Bool -> [Val] -> Val -> [ConstructorInfo] -> TypeCheck [(ConstructorInfo, Env)]
- data MatchingConstructors a
- getMatchingConstructor :: Bool -> QName -> [Val] -> TypeCheck (MatchingConstructors (Co, [Val], Env, [Val], ConstructorInfo))
- getFieldsAtType :: QName -> [Val] -> TypeCheck (Maybe [(Name, TVal)])
- projectType :: TVal -> Name -> Val -> TypeCheck TVal
- upData :: Bool -> Val -> QName -> [Val] -> TypeCheck Val
- matchClauses :: Env -> [Clause] -> [Val] -> TypeCheck (Maybe Val)
- bindMaybe :: Monad m => m (Maybe a) -> (a -> m (Maybe b)) -> m (Maybe b)
- matchClause :: Env -> [Pattern] -> Expr -> [Val] -> TypeCheck (Maybe Val)
- match :: Env -> Pattern -> Val -> TypeCheck (Maybe Env)
- matchList :: Env -> [Pattern] -> [Val] -> TypeCheck (Maybe Env)
- type GenToPattern = [(Int, Pattern)]
- type MatchState = (Env, GenToPattern)
- nonLinMatch :: Bool -> Bool -> MatchState -> Pattern -> Val -> TVal -> TypeCheck (Maybe MatchState)
- nonLinMatchList :: Bool -> Env -> [Pattern] -> [Val] -> TVal -> TypeCheck (Maybe Env)
- nonLinMatchList' :: Bool -> Bool -> MatchState -> [Pattern] -> [Val] -> TVal -> TypeCheck (Maybe MatchState)
- expandDefPat :: Pattern -> TypeCheck Pattern
- class Nocc a where
- eqValBool :: TVal -> Val -> Val -> TypeCheck Bool
- eqVal :: TVal -> Val -> Val -> TypeCheck ()
- data Force
- class Switchable a where
- switch :: a -> a
- leqDec :: Pol -> Dec -> Dec -> Bool
- subtype :: Val -> Val -> TypeCheck ()
- leqVal :: Pol -> TVal -> Val -> Val -> TypeCheck ()
- type MT12 = Maybe (OneOrTwo TVal)
- data TypeShape
- data SortShape
- shSize :: TypeShape
- typeView :: TVal -> TypeShape
- sortView :: Sort Val -> SortShape
- typeView12 :: (Functor m, Monad m, MonadError TraceError m) => OneOrTwo TVal -> m TypeShape
- sortView12 :: (Monad m, MonadError TraceError m) => OneOrTwo (Sort Val) -> m SortShape
- whnf12 :: OneOrTwo Env -> OneOrTwo Expr -> TypeCheck (OneOrTwo Val)
- app12 :: OneOrTwo Val -> OneOrTwo Val -> TypeCheck (OneOrTwo Val)
- leqVal' :: Force -> Pol -> MT12 -> Val -> Val -> TypeCheck ()
- leqClauses :: Force -> Pol -> MT12 -> Val -> TVal -> Env -> [Clause] -> Env -> [Clause] -> TypeCheck ()
- type NameMap = [(Name, Name)]
- alphaPattern :: Pattern -> Pattern -> StateT NameMap TypeCheck ()
- leqCases :: Force -> Pol -> MT12 -> Val -> Val -> TVal -> Env -> [Clause] -> TypeCheck ()
- leqCase :: Force -> Pol -> MT12 -> Val -> Val -> TVal -> Env -> Clause -> TypeCheck ()
- leqVals' :: Force -> Pol -> OneOrTwo TVal -> [Val] -> [Val] -> TypeCheck (OneOrTwo TVal)
- leqApp :: Force -> Pol -> Val -> [Val] -> Val -> [Val] -> TypeCheck ()
- isEmptyType :: TVal -> TypeCheck Bool
- isUnitType :: TVal -> TypeCheck Bool
- leqSort :: Pol -> Sort Val -> Sort Val -> TypeCheck ()
- leqSort' :: Sort Val -> Sort Val -> TypeCheck ()
- minSize :: Val -> Val -> Maybe Val
- maxMins :: [Maybe Val] -> Maybe Val
- leqSize :: Pol -> Val -> Val -> TypeCheck ()
- ltSize :: Val -> Val -> TypeCheck ()
- leSize :: LtLe -> Pol -> Val -> Val -> TypeCheck ()
- leqSize' :: Val -> Val -> TypeCheck ()
- leSize' :: LtLe -> Val -> Val -> TypeCheck ()
- leSize'' :: LtLe -> Int -> Val -> Val -> TypeCheck ()
- leSizePlus :: LtLe -> Int -> [Val] -> [Val] -> TypeCheck ()
- varBelowInfty :: Val -> TypeCheck Bool
- leSizePlus' :: LtLe -> Int -> [Val] -> [Val] -> TypeCheck ()
- tryIrregularBound :: Int -> Int -> Int -> TypeCheck ()
- lexSizes :: LtLe -> [Val] -> [Val] -> TypeCheck ()
- entailsGuard :: Pol -> Bound Val -> Bound Val -> TypeCheck ()
- checkGuard :: Bound Val -> TypeCheck ()
- addOrCheckGuard :: Pol -> Bound Val -> TypeCheck a -> TypeCheck a
- leqPolM :: Pol -> PProd -> TypeCheck ()
- leqPolPoly :: Pol -> PPoly -> TypeCheck ()
- addPosEdge :: DefId -> DefId -> PProd -> TypeCheck ()
- checkPositivityGraph :: TypeCheck ()
- telView :: TVal -> TypeCheck ([(Val, TBinding TVal)], TVal)
- mkConVal :: Dotted -> ConK -> QName -> [Val] -> TVal -> TypeCheck Val
Documentation
traceRecord :: String -> a -> a Source #
traceRecordM :: Monad m => String -> m () Source #
traceMatch :: String -> a -> a Source #
traceMatchM :: Monad m => String -> m () Source #
traceLoopM :: Monad m => String -> m () Source #
traceSizeM :: Monad m => String -> m () Source #
failValInv :: MonadError TraceError m => Val -> m a Source #
Minimal complete definition
Instances
Reval Env Source # | |
Reval Val Source # | |
Reval Valuation Source # | When combining valuations, the old one takes priority.
|
Reval a => Reval (Bound a) Source # | |
Reval a => Reval (Measure a) Source # | |
Reval a => Reval (Maybe a) Source # | |
Reval a => Reval [a] Source # | |
Reval b => Reval (a, b) Source # | |
class ClosToExpr a where Source #
Minimal complete definition
Nothing
Methods
closToExpr :: Env -> a -> TypeCheck a Source #
bindClosToExpr :: Env -> a -> (Env -> a -> TypeCheck b) -> TypeCheck b Source #
Instances
ClosToExpr Expr Source # | |
ClosToExpr Telescope Source # | |
ClosToExpr a => ClosToExpr (Bound a) Source # | |
ClosToExpr a => ClosToExpr (Dom a) Source # | |
ClosToExpr a => ClosToExpr (Measure a) Source # | |
ClosToExpr a => ClosToExpr (Sort a) Source # | |
ClosToExpr a => ClosToExpr (TBinding a) Source # | |
ClosToExpr a => ClosToExpr (Tagged a) Source # | |
ClosToExpr a => ClosToExpr (Maybe a) Source # | |
ClosToExpr a => ClosToExpr [a] Source # | |
whnf :: Env -> Expr -> TypeCheck Val Source #
Weak head normal form.
Monadic, since it reads the globally defined constants from the signature.
let
s are expanded away.
matchingConstructors :: Val -> TypeCheck (Maybe [(ConstructorInfo, Env)]) Source #
matchingConstructors' :: QName -> [Val] -> TypeCheck [(ConstructorInfo, Env)] Source #
matchingConstructors'' :: Bool -> [Val] -> Val -> [ConstructorInfo] -> TypeCheck [(ConstructorInfo, Env)] Source #
data MatchingConstructors a Source #
Constructors
NoConstructor | |
OneConstructor a | |
ManyConstructors | |
UnknownConstructors |
Instances
Show a => Show (MatchingConstructors a) Source # | |
Defined in Eval Methods showsPrec :: Int -> MatchingConstructors a -> ShowS # show :: MatchingConstructors a -> String # showList :: [MatchingConstructors a] -> ShowS # | |
Eq a => Eq (MatchingConstructors a) Source # | |
Defined in Eval Methods (==) :: MatchingConstructors a -> MatchingConstructors a -> Bool # (/=) :: MatchingConstructors a -> MatchingConstructors a -> Bool # |
getMatchingConstructor :: Bool -> QName -> [Val] -> TypeCheck (MatchingConstructors (Co, [Val], Env, [Val], ConstructorInfo)) Source #
Typed Non-linear Matching -----------------------------------------
type GenToPattern = [(Int, Pattern)] Source #
type MatchState = (Env, GenToPattern) Source #
nonLinMatch :: Bool -> Bool -> MatchState -> Pattern -> Val -> TVal -> TypeCheck (Maybe MatchState) Source #
nonLinMatchList' :: Bool -> Bool -> MatchState -> [Pattern] -> [Val] -> TVal -> TypeCheck (Maybe MatchState) Source #
Unification
Occurrence check nocc ks v
(used by SPos
and TypeCheck
).
Checks that generic values ks
does not occur in value v
.
In the process, tv
is normalized.
class Switchable a where Source #
Instances
Switchable Force Source # | |
Switchable Pol Source # | |
Switchable a => Switchable (Maybe a) Source # | |
Switchable (a, a) Source # | |
Constructors
ShQuant PiSigma (OneOrTwo Name) (OneOrTwo Domain) (OneOrTwo FVal) | |
ShSort SortShape | |
ShData QName (OneOrTwo TVal) | |
ShNe (OneOrTwo TVal) | |
ShSing Val TVal | |
ShSingL Val TVal TVal | |
ShSingR TVal Val TVal | |
ShNone |
Instances
Eq TypeShape Source # | |
Ord TypeShape Source # | |
Instances
Eq SortShape Source # | |
Ord SortShape Source # | |
typeView12 :: (Functor m, Monad m, MonadError TraceError m) => OneOrTwo TVal -> m TypeShape Source #
sortView12 :: (Monad m, MonadError TraceError m) => OneOrTwo (Sort Val) -> m SortShape Source #
leqClauses :: Force -> Pol -> MT12 -> Val -> TVal -> Env -> [Clause] -> Env -> [Clause] -> TypeCheck () Source #
checkPositivityGraph :: TypeCheck () Source #
mkConVal :: Dotted -> ConK -> QName -> [Val] -> TVal -> TypeCheck Val Source #
Turn a fully applied constructor value into a named record value.