jmacro-0.6.17: QuasiQuotation library for programmatic generation of Javascript code.
Safe HaskellNone
LanguageHaskell98

Language.Javascript.JMacro.TypeCheck

Documentation

eitherIsLeft :: Either a b -> Bool Source #

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

zipWithOrChange :: (a -> a -> b) -> (a -> b) -> [a] -> [a] -> [b] Source #

zipWithOrIdM :: Monad m => (a -> a -> m a) -> [a] -> [a] -> m [a] Source #

unionWithM :: (Monad m, Ord key) => (val -> val -> m val) -> Map key val -> Map key val -> m (Map key val) Source #

intersectionWithM :: (Monad m, Ord key) => (val -> val -> m b) -> Map key val -> Map key val -> m (Map key b) Source #

class Compos1 t where Source #

Methods

compos1 :: (forall a. a -> m a) -> (forall a b. m (a -> b) -> m a -> m b) -> (t -> m t) -> t -> m t Source #

Instances

Instances details
Compos1 JType Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

compos1 :: (forall a. a -> m a) -> (forall a b. m (a -> b) -> m a -> m b) -> (JType -> m JType) -> JType -> m JType Source #

composOp1 :: Compos1 t => (t -> t) -> t -> t Source #

composOpM1 :: (Compos1 t, Monad m) => (t -> m t) -> t -> m t Source #

composOpM1_ :: (Compos1 t, Monad m) => (t -> m ()) -> t -> m () Source #

composOpFold1 :: Compos1 t => b -> (b -> b -> b) -> (t -> b) -> t -> b Source #

newtype C b a Source #

Constructors

C 

Fields

data StoreVal Source #

Constructors

SVType JType 
SVConstrained (Set Constraint) 

Instances

Instances details
Show StoreVal Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

showsPrec :: Int -> StoreVal -> ShowS

show :: StoreVal -> String

showList :: [StoreVal] -> ShowS

data TCState Source #

Constructors

TCS 

Fields

Instances

Instances details
Show TCState Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

showsPrec :: Int -> TCState -> ShowS

show :: TCState -> String

showList :: [TCState] -> ShowS

MonadState TCState TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

get :: TMonad TCState

put :: TCState -> TMonad ()

state :: (TCState -> (a, TCState)) -> TMonad a

newtype TMonad a Source #

Constructors

TMonad (ErrorT String (State TCState) a) 

Instances

Instances details
Monad TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

(>>=) :: TMonad a -> (a -> TMonad b) -> TMonad b

(>>) :: TMonad a -> TMonad b -> TMonad b

return :: a -> TMonad a

Functor TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

fmap :: (a -> b) -> TMonad a -> TMonad b

(<$) :: a -> TMonad b -> TMonad a

Applicative TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

pure :: a -> TMonad a

(<*>) :: TMonad (a -> b) -> TMonad a -> TMonad b

liftA2 :: (a -> b -> c) -> TMonad a -> TMonad b -> TMonad c

(*>) :: TMonad a -> TMonad b -> TMonad b

(<*) :: TMonad a -> TMonad b -> TMonad a

MonadError String TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

throwError :: String -> TMonad a

catchError :: TMonad a -> (String -> TMonad a) -> TMonad a

MonadState TCState TMonad Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

Methods

get :: TMonad TCState

put :: TCState -> TMonad ()

state :: (TCState -> (a, TCState)) -> TMonad a

class JTypeCheck a where Source #

Methods

typecheck :: a -> TMonad JType Source #

Instances

Instances details
JTypeCheck JVal Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

JTypeCheck JExpr Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

JTypeCheck JStat Source # 
Instance details

Defined in Language.Javascript.JMacro.TypeCheck

evalTMonad :: TMonad a -> Either String a Source #

runTMonad :: TMonad a -> (Either String a, TCState) Source #

withContext :: TMonad a -> TMonad String -> TMonad a Source #

traversem_ :: (Foldable t, Monad f) => (a -> f b) -> t a -> f () Source #

freeVarsWithNames :: JType -> TMonad (Map Int String) Source #

tyErr0 :: String -> TMonad a Source #

tyErr1 :: String -> JType -> TMonad b Source #

tyErr2ext :: String -> String -> String -> JType -> JType -> TMonad a Source #

prettyEnv :: TMonad [Map Ident String] Source #

runTypecheckRaw :: JTypeCheck a => a -> (Either String JType, TCState) Source #

runTypecheckFull :: JTypeCheck a => a -> (Either String (String, [Map Ident String]), TCState) Source #

runTypecheck :: JTypeCheck a => a -> Either String String Source #

evalTypecheck :: JTypeCheck a => a -> Either String [Map Ident String] Source #

addToStack :: Ord a => a -> [Set a] -> [Set a] Source #

mapConstraint :: (Monad m, Functor m) => (JType -> m JType) -> Constraint -> m Constraint Source #

occursCheck :: Int -> JType -> TMonad () Source #

withLocalScope :: TMonad a -> TMonad (a, Set Int) Source #

setFrozen :: Set Int -> TMonad () Source #

frame2VarRefs :: Set t -> [(Maybe a, t)] Source #

freeVars :: JType -> TMonad (Set Int) Source #