Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data TAtom
- data NTypeF (m :: Type -> Type) r
- compareTypes :: NTypeF m r -> NTypeF m r -> Ordering
- data NSymbolicF r
- type SThunk (m :: Type -> Type) = NThunkF m (Symbolic m)
- type SValue (m :: Type -> Type) = Ref m (NSymbolicF (NTypeF m (Symbolic m)))
- data Symbolic m
- everyPossible :: MonadAtomicRef m => m (Symbolic m)
- mkSymbolic :: MonadAtomicRef m => [NTypeF m (Symbolic m)] -> m (Symbolic m)
- mkSymbolic1 :: MonadAtomicRef m => NTypeF m (Symbolic m) -> m (Symbolic m)
- packSymbolic :: MonadAtomicRef m => NSymbolicF (NTypeF m (Symbolic m)) -> m (Symbolic m)
- unpackSymbolic :: (MonadAtomicRef m, MonadThunkId m, MonadCatch m) => Symbolic m -> m (NSymbolicF (NTypeF m (Symbolic m)))
- type MonadLint e m = (Scoped (Symbolic m) m, Framed e m, MonadAtomicRef m, MonadCatch m, MonadThunkId m)
- symerr :: forall e m a. MonadLint e m => Text -> m a
- renderSymbolic :: MonadLint e m => Symbolic m -> m Text
- merge :: forall e m. MonadLint e m => NExprF () -> [NTypeF m (Symbolic m)] -> [NTypeF m (Symbolic m)] -> m [NTypeF m (Symbolic m)]
- unify :: forall e m a. MonadLint e m => NExprF a -> Symbolic m -> Symbolic m -> m (Symbolic m)
- lintBinaryOp :: forall e m. (MonadLint e m, MonadEval (Symbolic m) m) => NBinaryOp -> Symbolic m -> m (Symbolic m) -> m (Symbolic m)
- lintApp :: forall e m. MonadLint e m => NExprF () -> Symbolic m -> m (Symbolic m) -> m (HashMap VarName (Symbolic m), Symbolic m)
- newtype Lint s a = Lint {}
- runLintM :: Options -> Lint s a -> ST s a
- symbolicBaseEnv :: Monad m => m (Scopes m (Symbolic m))
- lint :: Options -> NExprLoc -> ST s (Symbolic (Lint s))
Documentation
data NSymbolicF r Source #
Instances
Instances
everyPossible :: MonadAtomicRef m => m (Symbolic m) Source #
mkSymbolic :: MonadAtomicRef m => [NTypeF m (Symbolic m)] -> m (Symbolic m) Source #
mkSymbolic1 :: MonadAtomicRef m => NTypeF m (Symbolic m) -> m (Symbolic m) Source #
packSymbolic :: MonadAtomicRef m => NSymbolicF (NTypeF m (Symbolic m)) -> m (Symbolic m) Source #
unpackSymbolic :: (MonadAtomicRef m, MonadThunkId m, MonadCatch m) => Symbolic m -> m (NSymbolicF (NTypeF m (Symbolic m))) Source #
type MonadLint e m = (Scoped (Symbolic m) m, Framed e m, MonadAtomicRef m, MonadCatch m, MonadThunkId m) Source #
merge :: forall e m. MonadLint e m => NExprF () -> [NTypeF m (Symbolic m)] -> [NTypeF m (Symbolic m)] -> m [NTypeF m (Symbolic m)] Source #
unify :: forall e m a. MonadLint e m => NExprF a -> Symbolic m -> Symbolic m -> m (Symbolic m) Source #
Result == NMany []
-> unify
fails.
lintBinaryOp :: forall e m. (MonadLint e m, MonadEval (Symbolic m) m) => NBinaryOp -> Symbolic m -> m (Symbolic m) -> m (Symbolic m) Source #
lintApp :: forall e m. MonadLint e m => NExprF () -> Symbolic m -> m (Symbolic m) -> m (HashMap VarName (Symbolic m), Symbolic m) infixl 1 Source #
Instances
MonadFix (Lint s) Source # | |
Applicative (Lint s) Source # | |
Functor (Lint s) Source # | |
Monad (Lint s) Source # | |
MonadCatch (Lint s) Source # | |
MonadThrow (Lint s) Source # | |
MonadThunkId (Lint s) Source # | |
MonadAtomicRef (Lint s) Source # | |
MonadRef (Lint s) Source # | |
Scoped (Symbolic (Lint s)) (Lint s) Source # | |
MonadReader (Context (Lint s) (Symbolic (Lint s))) (Lint s) Source # | |
type ThunkId (Lint s) Source # | |
type Ref (Lint s) Source # | |