unison-parser-typechecker-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.KindInference.Generate.Monad

Synopsis

Documentation

newtype Gen v loc a Source #

Constructors

Gen 

Fields

Instances

Instances details
Applicative (Gen v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Methods

pure :: a -> Gen v loc a #

(<*>) :: Gen v loc (a -> b) -> Gen v loc a -> Gen v loc b #

liftA2 :: (a -> b -> c) -> Gen v loc a -> Gen v loc b -> Gen v loc c #

(*>) :: Gen v loc a -> Gen v loc b -> Gen v loc b #

(<*) :: Gen v loc a -> Gen v loc b -> Gen v loc a #

Functor (Gen v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Methods

fmap :: (a -> b) -> Gen v loc a -> Gen v loc b #

(<$) :: a -> Gen v loc b -> Gen v loc a #

Monad (Gen v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Methods

(>>=) :: Gen v loc a -> (a -> Gen v loc b) -> Gen v loc b #

(>>) :: Gen v loc a -> Gen v loc b -> Gen v loc b #

return :: a -> Gen v loc a #

MonadState (GenState v loc) (Gen v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Methods

get :: Gen v loc (GenState v loc) #

put :: GenState v loc -> Gen v loc () #

state :: (GenState v loc -> (a, GenState v loc)) -> Gen v loc a #

data GenState v loc Source #

The Gen monad state

Constructors

GenState 

Fields

Instances

Instances details
Generic (GenState v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Associated Types

type Rep (GenState v loc) :: Type -> Type #

Methods

from :: GenState v loc -> Rep (GenState v loc) x #

to :: Rep (GenState v loc) x -> GenState v loc #

MonadState (GenState v loc) (Gen v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

Methods

get :: Gen v loc (GenState v loc) #

put :: GenState v loc -> Gen v loc () #

state :: (GenState v loc -> (a, GenState v loc)) -> Gen v loc a #

type Rep (GenState v loc) Source # 
Instance details

Defined in Unison.KindInference.Generate.Monad

type Rep (GenState v loc) = D1 ('MetaData "GenState" "Unison.KindInference.Generate.Monad" "unison-parser-typechecker-0.0.0-KNkVGbTXlis2lnVjsRIJUx" 'False) (C1 ('MetaCons "GenState" 'PrefixI 'True) (S1 ('MetaSel ('Just "unifVars") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set Symbol)) :*: (S1 ('MetaSel ('Just "typeMap") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (Type v loc) (NonEmpty (UVar v loc)))) :*: S1 ('MetaSel ('Just "newVars") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UVar v loc]))))

type GeneratedConstraint v loc = Constraint (UVar v loc) v loc Provenance Source #

A generated constraint

run :: Gen v loc a -> GenState v loc -> (a, GenState v loc) Source #

Gen monad runner

freshVar :: Var v => Type v loc -> Gen v loc (UVar v loc) Source #

Create a unique UVar associated with typ

pushType :: Var v => Type v loc -> Gen v loc (UVar v loc) Source #

Associate a fresh UVar with t, push onto context

popType :: Var v => Type v loc -> Gen v loc () Source #

Remove a Type from the context

scopedType :: Var v => Type v loc -> (UVar v loc -> Gen v loc r) -> Gen v loc r Source #

Helper to run an action with the given Type in the context

lookupType :: Var v => Type v loc -> Gen v loc (Maybe (UVar v loc)) Source #

Lookup the UVar associated with a Type