purescript-0.15.12: PureScript Programming Language Compiler
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.PureScript

Description

The main compiler module

Synopsis

Documentation

data Literal a #

Data type for literal values. Parameterised so it can be used for Exprs and Binders.

Constructors

NumericLiteral (Either Integer Double)

A numeric literal

StringLiteral PSString

A string literal

CharLiteral Char

A character literal

BooleanLiteral Bool

A boolean literal

ArrayLiteral [a]

An array literal

ObjectLiteral [(PSString, a)]

An object literal

Instances

Instances details
Functor Literal # 
Instance details

Defined in Language.PureScript.AST.Literals

Methods

fmap :: (a -> b) -> Literal a -> Literal b #

(<$) :: a -> Literal b -> Literal a #

Show a => Show (Literal a) # 
Instance details

Defined in Language.PureScript.AST.Literals

Methods

showsPrec :: Int -> Literal a -> ShowS #

show :: Literal a -> String #

showList :: [Literal a] -> ShowS #

Eq a => Eq (Literal a) # 
Instance details

Defined in Language.PureScript.AST.Literals

Methods

(==) :: Literal a -> Literal a -> Bool #

(/=) :: Literal a -> Literal a -> Bool #

Ord a => Ord (Literal a) # 
Instance details

Defined in Language.PureScript.AST.Literals

Methods

compare :: Literal a -> Literal a -> Ordering #

(<) :: Literal a -> Literal a -> Bool #

(<=) :: Literal a -> Literal a -> Bool #

(>) :: Literal a -> Literal a -> Bool #

(>=) :: Literal a -> Literal a -> Bool #

max :: Literal a -> Literal a -> Literal a #

min :: Literal a -> Literal a -> Literal a #

data Module #

A module declaration, consisting of comments about the module, a module name, a list of declarations, and a list of the declarations that are explicitly exported. If the export list is Nothing, everything is exported.

Instances

Instances details
Show Module # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> Module -> ShowS #

show :: Module -> String #

showList :: [Module] -> ShowS #

data Type a #

The type of types

Constructors

TUnknown a Int

A unification variable of type Type

TypeVar a Text

A named type variable

TypeLevelString a PSString

A type-level string

TypeLevelInt a Integer

A type-level natural

TypeWildcard a WildcardData

A type wildcard, as would appear in a partial type synonym

TypeConstructor a (Qualified (ProperName 'TypeName))

A type constructor

TypeOp a (Qualified (OpName 'TypeOpName))

A type operator. This will be desugared into a type constructor during the "operators" phase of desugaring.

TypeApp a (Type a) (Type a)

A type application

KindApp a (Type a) (Type a)

Explicit kind application

ForAll a TypeVarVisibility Text (Maybe (Type a)) (Type a) (Maybe SkolemScope)

Forall quantifier

ConstrainedType a (Constraint a) (Type a)

A type with a set of type class constraints

Skolem a Text (Maybe (Type a)) Int SkolemScope

A skolem constant

REmpty a

An empty row

RCons a Label (Type a) (Type a)

A non-empty row

KindedType a (Type a) (Type a)

A type with a kind annotation

BinaryNoParensType a (Type a) (Type a) (Type a)

Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed.

ParensInType a (Type a)

Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed.

Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching.

Instances

Instances details
Foldable Type # 
Instance details

Defined in Language.PureScript.Types

Methods

fold :: Monoid m => Type m -> m #

foldMap :: Monoid m => (a -> m) -> Type a -> m #

foldMap' :: Monoid m => (a -> m) -> Type a -> m

foldr :: (a -> b -> b) -> b -> Type a -> b #

foldr' :: (a -> b -> b) -> b -> Type a -> b #

foldl :: (b -> a -> b) -> b -> Type a -> b #

foldl' :: (b -> a -> b) -> b -> Type a -> b #

foldr1 :: (a -> a -> a) -> Type a -> a #

foldl1 :: (a -> a -> a) -> Type a -> a #

toList :: Type a -> [a] #

null :: Type a -> Bool #

length :: Type a -> Int #

elem :: Eq a => a -> Type a -> Bool #

maximum :: Ord a => Type a -> a #

minimum :: Ord a => Type a -> a #

sum :: Num a => Type a -> a #

product :: Num a => Type a -> a #

Traversable Type # 
Instance details

Defined in Language.PureScript.Types

Methods

traverse :: Applicative f => (a -> f b) -> Type a -> f (Type b) #

sequenceA :: Applicative f => Type (f a) -> f (Type a)

mapM :: Monad m => (a -> m b) -> Type a -> m (Type b)

sequence :: Monad m => Type (m a) -> m (Type a)

Functor Type # 
Instance details

Defined in Language.PureScript.Types

Methods

fmap :: (a -> b) -> Type a -> Type b #

(<$) :: a -> Type b -> Type a #

FromJSON (Type SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

FromJSON (Type ()) # 
Instance details

Defined in Language.PureScript.Types

FromJSON a => FromJSON (Type a) # 
Instance details

Defined in Language.PureScript.Types

ToJSON a => ToJSON (Type a) # 
Instance details

Defined in Language.PureScript.Types

Generic (Type a) # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep (Type a) :: Type -> Type #

Methods

from :: Type a -> Rep (Type a) x #

to :: Rep (Type a) x -> Type a #

Show a => Show (Type a) # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> Type a -> ShowS #

show :: Type a -> String #

showList :: [Type a] -> ShowS #

NFData a => NFData (Type a) # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: Type a -> () #

Eq (Type a) # 
Instance details

Defined in Language.PureScript.Types

Methods

(==) :: Type a -> Type a -> Bool #

(/=) :: Type a -> Type a -> Bool #

Ord (Type a) # 
Instance details

Defined in Language.PureScript.Types

Methods

compare :: Type a -> Type a -> Ordering #

(<) :: Type a -> Type a -> Bool #

(<=) :: Type a -> Type a -> Bool #

(>) :: Type a -> Type a -> Bool #

(>=) :: Type a -> Type a -> Bool #

max :: Type a -> Type a -> Type a #

min :: Type a -> Type a -> Type a #

Serialise a => Serialise (Type a) # 
Instance details

Defined in Language.PureScript.Types

Methods

encode :: Type a -> Encoding #

decode :: Decoder s (Type a) #

encodeList :: [Type a] -> Encoding #

decodeList :: Decoder s [Type a] #

type Rep (Type a) # 
Instance details

Defined in Language.PureScript.Types

type Rep (Type a) = D1 ('MetaData "Type" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((((C1 ('MetaCons "TUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "TypeVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "TypeLevelString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PSString)) :+: C1 ('MetaCons "TypeLevelInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))) :+: ((C1 ('MetaCons "TypeWildcard" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WildcardData)) :+: C1 ('MetaCons "TypeConstructor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'TypeName))))) :+: (C1 ('MetaCons "TypeOp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (OpName 'TypeOpName)))) :+: C1 ('MetaCons "TypeApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))))) :+: (((C1 ('MetaCons "KindApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "ForAll" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeVarVisibility) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SkolemScope)))))) :+: (C1 ('MetaCons "ConstrainedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Constraint a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "Skolem" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SkolemScope)))))) :+: ((C1 ('MetaCons "REmpty" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "RCons" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))) :+: (C1 ('MetaCons "KindedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: (C1 ('MetaCons "BinaryNoParensType" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "ParensInType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))))))

data Constraint a #

A typeclass constraint

Constructors

Constraint 

Fields

Instances

Instances details
Foldable Constraint # 
Instance details

Defined in Language.PureScript.Types

Methods

fold :: Monoid m => Constraint m -> m #

foldMap :: Monoid m => (a -> m) -> Constraint a -> m #

foldMap' :: Monoid m => (a -> m) -> Constraint a -> m

foldr :: (a -> b -> b) -> b -> Constraint a -> b #

foldr' :: (a -> b -> b) -> b -> Constraint a -> b #

foldl :: (b -> a -> b) -> b -> Constraint a -> b #

foldl' :: (b -> a -> b) -> b -> Constraint a -> b #

foldr1 :: (a -> a -> a) -> Constraint a -> a #

foldl1 :: (a -> a -> a) -> Constraint a -> a #

toList :: Constraint a -> [a] #

null :: Constraint a -> Bool #

length :: Constraint a -> Int #

elem :: Eq a => a -> Constraint a -> Bool #

maximum :: Ord a => Constraint a -> a #

minimum :: Ord a => Constraint a -> a #

sum :: Num a => Constraint a -> a #

product :: Num a => Constraint a -> a #

Traversable Constraint # 
Instance details

Defined in Language.PureScript.Types

Methods

traverse :: Applicative f => (a -> f b) -> Constraint a -> f (Constraint b) #

sequenceA :: Applicative f => Constraint (f a) -> f (Constraint a)

mapM :: Monad m => (a -> m b) -> Constraint a -> m (Constraint b)

sequence :: Monad m => Constraint (m a) -> m (Constraint a)

Functor Constraint # 
Instance details

Defined in Language.PureScript.Types

Methods

fmap :: (a -> b) -> Constraint a -> Constraint b #

(<$) :: a -> Constraint b -> Constraint a #

FromJSON (Constraint SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

FromJSON (Constraint ()) # 
Instance details

Defined in Language.PureScript.Types

FromJSON a => FromJSON (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

ToJSON a => ToJSON (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Generic (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep (Constraint a) :: Type -> Type #

Methods

from :: Constraint a -> Rep (Constraint a) x #

to :: Rep (Constraint a) x -> Constraint a #

Show a => Show (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> Constraint a -> ShowS #

show :: Constraint a -> String #

showList :: [Constraint a] -> ShowS #

NFData a => NFData (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: Constraint a -> () #

Eq (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Methods

(==) :: Constraint a -> Constraint a -> Bool #

(/=) :: Constraint a -> Constraint a -> Bool #

Ord (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

Serialise a => Serialise (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

type Rep (Constraint a) # 
Instance details

Defined in Language.PureScript.Types

type Rep (Constraint a) = D1 ('MetaData "Constraint" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Constraint" 'PrefixI 'True) ((S1 ('MetaSel ('Just "constraintAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "constraintClass") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'ClassName)))) :*: (S1 ('MetaSel ('Just "constraintKindArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type a]) :*: (S1 ('MetaSel ('Just "constraintArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type a]) :*: S1 ('MetaSel ('Just "constraintData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ConstraintData))))))

data Options #

The data type of compiler options

Constructors

Options 

Fields

Instances

Instances details
Show Options # 
Instance details

Defined in Language.PureScript.Options

Methods

showsPrec :: Int -> Options -> ShowS #

show :: Options -> String #

showList :: [Options] -> ShowS #

MonadReader Options Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

ask :: Make Options #

local :: (Options -> Options) -> Make a -> Make a #

reader :: (Options -> a) -> Make a #

data Text #

Instances

Instances details
Structured Text 
Instance details

Defined in Distribution.Utils.Structured

Methods

structure :: Proxy Text -> Structure

structureHash' :: Tagged Text MD5

FromJSON Text 
Instance details

Defined in Data.Aeson.Types.FromJSON

FromJSONKey Text 
Instance details

Defined in Data.Aeson.Types.FromJSON

ToJSON Text 
Instance details

Defined in Data.Aeson.Types.ToJSON

ToJSONKey Text 
Instance details

Defined in Data.Aeson.Types.ToJSON

Chunk Text 
Instance details

Defined in Data.Attoparsec.Internal.Types

Associated Types

type ChunkElem Text #

ToMarkup Text 
Instance details

Defined in Text.Blaze

ToValue Text 
Instance details

Defined in Text.Blaze

ToLogStr Text 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Text -> LogStr #

Hashable Text 
Instance details

Defined in Data.Hashable.Class

Methods

hashWithSalt :: Int -> Text -> Int #

hash :: Text -> Int #

Ixed Text 
Instance details

Defined in Control.Lens.At

Print Text 
Instance details

Defined in Protolude.Show

Methods

hPutStr :: MonadIO m => Handle -> Text -> m () #

putStr :: MonadIO m => Text -> m () #

hPutStrLn :: MonadIO m => Handle -> Text -> m () #

putStrLn :: MonadIO m => Text -> m () #

putErrLn :: MonadIO m => Text -> m () #

Extract Text

Since: regex-base-0.94.0.0

Instance details

Defined in Text.Regex.Base.RegexLike

Methods

before :: Int -> Text -> Text #

after :: Int -> Text -> Text #

empty :: Text #

extract :: (Int, Int) -> Text -> Text #

Serialise Text

Since: serialise-0.2.0.0

Instance details

Defined in Codec.Serialise.Class

StringConv ByteString Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> ByteString -> Text #

StringConv ByteString Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> ByteString -> Text #

StringConv Text ByteString 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text -> ByteString #

StringConv Text ByteString 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text -> ByteString #

StringConv Text Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text -> Text #

StringConv Text Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text0 -> Text #

StringConv Text String 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text -> String #

StringConv Text Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> Text -> Text0 #

StringConv String Text 
Instance details

Defined in Protolude.Conv

Methods

strConv :: Leniency -> String -> Text #

ConvertText Text Text 
Instance details

Defined in Protolude.ConvertText

Methods

toS :: Text -> Text #

ConvertText Text Text 
Instance details

Defined in Protolude.ConvertText

Methods

toS :: Text0 -> Text #

ConvertText Text String 
Instance details

Defined in Protolude.ConvertText

Methods

toS :: Text -> String #

ConvertText Text Text 
Instance details

Defined in Protolude.ConvertText

Methods

toS :: Text -> Text0 #

ConvertText String Text 
Instance details

Defined in Protolude.ConvertText

Methods

toS :: String -> Text #

Monad m => Stream Text m Char 
Instance details

Defined in Text.Parsec.Prim

Methods

uncons :: Text -> m (Maybe (Char, Text))

Cons Text Text Char Char 
Instance details

Defined in Control.Lens.Cons

Methods

_Cons :: Prism Text Text (Char, Text) (Char, Text) #

Snoc Text Text Char Char 
Instance details

Defined in Control.Lens.Cons

Methods

_Snoc :: Prism Text Text (Text, Char) (Text, Char) #

type ChunkElem Text 
Instance details

Defined in Data.Attoparsec.Internal.Types

type State Text 
Instance details

Defined in Data.Attoparsec.Internal.Types

type State Text = Buffer
type Item Text 
Instance details

Defined in Data.Text

type Item Text = Char
type Index Text 
Instance details

Defined in Control.Lens.At

type Index Text = Int
type IxValue Text 
Instance details

Defined in Control.Lens.At

data Name #

A sum of the possible name types, useful for error and lint messages.

Instances

Instances details
Generic Name # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep Name :: Type -> Type #

Methods

from :: Name -> Rep Name x #

to :: Rep Name x -> Name #

Show Name # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

NFData Name # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: Name -> () #

Eq Name # 
Instance details

Defined in Language.PureScript.Names

Methods

(==) :: Name -> Name -> Bool #

(/=) :: Name -> Name -> Bool #

Ord Name # 
Instance details

Defined in Language.PureScript.Names

Methods

compare :: Name -> Name -> Ordering #

(<) :: Name -> Name -> Bool #

(<=) :: Name -> Name -> Bool #

(>) :: Name -> Name -> Bool #

(>=) :: Name -> Name -> Bool #

max :: Name -> Name -> Name #

min :: Name -> Name -> Name #

Serialise Name # 
Instance details

Defined in Language.PureScript.Names

type Rep Name # 
Instance details

Defined in Language.PureScript.Names

type Rep Name = D1 ('MetaData "Name" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "IdentName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :+: (C1 ('MetaCons "ValOpName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'ValueOpName))) :+: C1 ('MetaCons "TyName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName))))) :+: ((C1 ('MetaCons "TyOpName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'TypeOpName))) :+: C1 ('MetaCons "DctorName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ConstructorName)))) :+: (C1 ('MetaCons "TyClassName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ClassName))) :+: C1 ('MetaCons "ModName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)))))

data Ident #

Names for value identifiers

Constructors

Ident Text

An alphanumeric identifier

GenIdent (Maybe Text) Integer

A generated name for an identifier

UnusedIdent

A generated name used only for type-checking

InternalIdent !InternalIdentData

A generated name used only for internal transformations

Instances

Instances details
FromJSON Ident # 
Instance details

Defined in Language.PureScript.Names

ToJSON Ident # 
Instance details

Defined in Language.PureScript.Names

Generic Ident # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep Ident :: Type -> Type #

Methods

from :: Ident -> Rep Ident x #

to :: Rep Ident x -> Ident #

Show Ident # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> Ident -> ShowS #

show :: Ident -> String #

showList :: [Ident] -> ShowS #

NFData Ident # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: Ident -> () #

Eq Ident # 
Instance details

Defined in Language.PureScript.Names

Methods

(==) :: Ident -> Ident -> Bool #

(/=) :: Ident -> Ident -> Bool #

Ord Ident # 
Instance details

Defined in Language.PureScript.Names

Methods

compare :: Ident -> Ident -> Ordering #

(<) :: Ident -> Ident -> Bool #

(<=) :: Ident -> Ident -> Bool #

(>) :: Ident -> Ident -> Bool #

(>=) :: Ident -> Ident -> Bool #

max :: Ident -> Ident -> Ident #

min :: Ident -> Ident -> Ident #

Serialise Ident # 
Instance details

Defined in Language.PureScript.Names

type Rep Ident # 
Instance details

Defined in Language.PureScript.Names

type Rep Ident = D1 ('MetaData "Ident" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "Ident" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "GenIdent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer))) :+: (C1 ('MetaCons "UnusedIdent" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InternalIdent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 InternalIdentData))))

type HasCallStack = ?callStack :: CallStack #

data ErrorMessage #

Instances

Instances details
Show ErrorMessage # 
Instance details

Defined in Language.PureScript.Errors

Methods

showsPrec :: Int -> ErrorMessage -> ShowS #

show :: ErrorMessage -> String #

showList :: [ErrorMessage] -> ShowS #

data Comment #

Instances

Instances details
FromJSON Comment # 
Instance details

Defined in Language.PureScript.Comments

ToJSON Comment # 
Instance details

Defined in Language.PureScript.Comments

Generic Comment # 
Instance details

Defined in Language.PureScript.Comments

Associated Types

type Rep Comment :: Type -> Type #

Methods

from :: Comment -> Rep Comment x #

to :: Rep Comment x -> Comment #

Show Comment # 
Instance details

Defined in Language.PureScript.Comments

Methods

showsPrec :: Int -> Comment -> ShowS #

show :: Comment -> String #

showList :: [Comment] -> ShowS #

NFData Comment # 
Instance details

Defined in Language.PureScript.Comments

Methods

rnf :: Comment -> () #

Eq Comment # 
Instance details

Defined in Language.PureScript.Comments

Methods

(==) :: Comment -> Comment -> Bool #

(/=) :: Comment -> Comment -> Bool #

Ord Comment # 
Instance details

Defined in Language.PureScript.Comments

Serialise Comment # 
Instance details

Defined in Language.PureScript.Comments

FromJSON (Constraint SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

FromJSON (Type SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

type Rep Comment # 
Instance details

Defined in Language.PureScript.Comments

type Rep Comment = D1 ('MetaData "Comment" "Language.PureScript.Comments" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "LineComment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "BlockComment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

type Env = Map ModuleName (SourceSpan, Imports, Exports) #

The imports and exports for a collection of modules. The SourceSpan is used to store the source location of the module with a given name, used to provide useful information when there is a duplicate module definition.

type Context = [(Ident, SourceType)] #

A map of locally-bound names in scope.

data Level #

How critical the issue is

Constructors

Error 
Warning 

Instances

Instances details
Show Level # 
Instance details

Defined in Language.PureScript.Errors

Methods

showsPrec :: Int -> Level -> ShowS #

show :: Level -> String #

showList :: [Level] -> ShowS #

data Role #

The role of a type constructor's parameter.

Constructors

Nominal

This parameter's identity affects the representation of the type it is parameterising.

Representational

This parameter's representation affects the representation of the type it is parameterising.

Phantom

This parameter has no effect on the representation of the type it is parameterising.

Instances

Instances details
FromJSON Role # 
Instance details

Defined in Language.PureScript.Roles

ToJSON Role # 
Instance details

Defined in Language.PureScript.Roles

Generic Role # 
Instance details

Defined in Language.PureScript.Roles

Associated Types

type Rep Role :: Type -> Type #

Methods

from :: Role -> Rep Role x #

to :: Rep Role x -> Role #

Show Role # 
Instance details

Defined in Language.PureScript.Roles

Methods

showsPrec :: Int -> Role -> ShowS #

show :: Role -> String #

showList :: [Role] -> ShowS #

NFData Role # 
Instance details

Defined in Language.PureScript.Roles

Methods

rnf :: Role -> () #

Eq Role # 
Instance details

Defined in Language.PureScript.Roles

Methods

(==) :: Role -> Role -> Bool #

(/=) :: Role -> Role -> Bool #

Ord Role # 
Instance details

Defined in Language.PureScript.Roles

Methods

compare :: Role -> Role -> Ordering #

(<) :: Role -> Role -> Bool #

(<=) :: Role -> Role -> Bool #

(>) :: Role -> Role -> Bool #

(>=) :: Role -> Role -> Bool #

max :: Role -> Role -> Role #

min :: Role -> Role -> Role #

Serialise Role # 
Instance details

Defined in Language.PureScript.Roles

type Rep Role # 
Instance details

Defined in Language.PureScript.Roles

type Rep Role = D1 ('MetaData "Role" "Language.PureScript.Roles" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Nominal" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Representational" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Phantom" 'PrefixI 'False) (U1 :: Type -> Type)))

data Environment #

The Environment defines all values and types which are currently in scope:

Constructors

Environment 

Fields

Instances

Instances details
Generic Environment # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep Environment :: Type -> Type #

Show Environment # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> Environment -> ShowS #

show :: Environment -> String #

showList :: [Environment] -> ShowS #

NFData Environment # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: Environment -> () #

type Rep Environment # 
Instance details

Defined in Language.PureScript.Environment

type Rep Environment = D1 ('MetaData "Environment" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Environment" 'PrefixI 'True) ((S1 ('MetaSel ('Just "names") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified Ident) (SourceType, NameKind, NameVisibility))) :*: (S1 ('MetaSel ('Just "types") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind))) :*: S1 ('MetaSel ('Just "dataConstructors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'ConstructorName)) (DataDeclType, ProperName 'TypeName, SourceType, [Ident]))))) :*: (S1 ('MetaSel ('Just "typeSynonyms") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType))) :*: (S1 ('MetaSel ('Just "typeClassDictionaries") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict))))) :*: S1 ('MetaSel ('Just "typeClasses") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'ClassName)) TypeClassData))))))

data Associativity #

Associativity for infix operators

Constructors

Infixl 
Infixr 
Infix 

Instances

Instances details
FromJSON Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

ToJSON Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Generic Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Associated Types

type Rep Associativity :: Type -> Type #

Show Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Methods

showsPrec :: Int -> Associativity -> ShowS #

show :: Associativity -> String #

showList :: [Associativity] -> ShowS #

NFData Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Methods

rnf :: Associativity -> () #

Eq Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Ord Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

Serialise Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

type Rep Associativity # 
Instance details

Defined in Language.PureScript.AST.Operators

type Rep Associativity = D1 ('MetaData "Associativity" "Language.PureScript.AST.Operators" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Infixl" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Infixr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Infix" 'PrefixI 'False) (U1 :: Type -> Type)))

data Fixity #

Fixity data for infix operators

Instances

Instances details
ToJSON Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Generic Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Associated Types

type Rep Fixity :: Type -> Type #

Methods

from :: Fixity -> Rep Fixity x #

to :: Rep Fixity x -> Fixity #

Show Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Methods

showsPrec :: Int -> Fixity -> ShowS #

show :: Fixity -> String #

showList :: [Fixity] -> ShowS #

NFData Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Methods

rnf :: Fixity -> () #

Eq Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Methods

(==) :: Fixity -> Fixity -> Bool #

(/=) :: Fixity -> Fixity -> Bool #

Ord Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

Serialise Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

type Rep Fixity # 
Instance details

Defined in Language.PureScript.AST.Operators

type Rep Fixity = D1 ('MetaData "Fixity" "Language.PureScript.AST.Operators" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Fixity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence)))

data Substitution #

A substitution of unification variables for types.

Constructors

Substitution 

Fields

data TypeMap #

A map from rigid type variable name/unknown variable pairs to new variables.

Constructors

TypeMap 

Fields

  • umSkolemMap :: Map Int (String, Int, Maybe SourceSpan)

    a map from skolems to their new names, including source and naming info

  • umUnknownMap :: Map Int Int

    a map from unification variables to their new names

  • umNextIndex :: Int

    unknowns and skolems share a source of names during renaming, to avoid overlaps in error messages. This is the next label for either case.

Instances

Instances details
Show TypeMap # 
Instance details

Defined in Language.PureScript.Errors

Methods

showsPrec :: Int -> TypeMap -> ShowS #

show :: TypeMap -> String #

showList :: [TypeMap] -> ShowS #

type Unknown = Int #

Unification variables

newtype SupplyT m a #

Constructors

SupplyT 

Fields

Instances

Instances details
MonadTrans SupplyT # 
Instance details

Defined in Control.Monad.Supply

Methods

lift :: Monad m => m a -> SupplyT m a #

MonadError e m => MonadError e (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

throwError :: e -> SupplyT m a #

catchError :: SupplyT m a -> (e -> SupplyT m a) -> SupplyT m a #

MonadReader r m => MonadReader r (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

ask :: SupplyT m r #

local :: (r -> r) -> SupplyT m a -> SupplyT m a #

reader :: (r -> a) -> SupplyT m a #

MonadWriter w m => MonadWriter w (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

writer :: (a, w) -> SupplyT m a

tell :: w -> SupplyT m ()

listen :: SupplyT m a -> SupplyT m (a, w)

pass :: SupplyT m (a, w -> w) -> SupplyT m a

MonadPlus m => Alternative (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

empty :: SupplyT m a #

(<|>) :: SupplyT m a -> SupplyT m a -> SupplyT m a #

some :: SupplyT m a -> SupplyT m [a] #

many :: SupplyT m a -> SupplyT m [a] #

Monad m => Applicative (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

pure :: a -> SupplyT m a #

(<*>) :: SupplyT m (a -> b) -> SupplyT m a -> SupplyT m b #

liftA2 :: (a -> b -> c) -> SupplyT m a -> SupplyT m b -> SupplyT m c #

(*>) :: SupplyT m a -> SupplyT m b -> SupplyT m b #

(<*) :: SupplyT m a -> SupplyT m b -> SupplyT m a #

Functor m => Functor (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

fmap :: (a -> b) -> SupplyT m a -> SupplyT m b #

(<$) :: a -> SupplyT m b -> SupplyT m a #

Monad m => Monad (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

(>>=) :: SupplyT m a -> (a -> SupplyT m b) -> SupplyT m b #

(>>) :: SupplyT m a -> SupplyT m b -> SupplyT m b #

return :: a -> SupplyT m a #

MonadPlus m => MonadPlus (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply

Methods

mzero :: SupplyT m a #

mplus :: SupplyT m a -> SupplyT m a -> SupplyT m a #

Monad m => MonadSupply (SupplyT m) # 
Instance details

Defined in Control.Monad.Supply.Class

newtype Make a #

A monad for running make actions

Instances

Instances details
MonadIO Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

liftIO :: IO a -> Make a #

Applicative Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

pure :: a -> Make a #

(<*>) :: Make (a -> b) -> Make a -> Make b #

liftA2 :: (a -> b -> c) -> Make a -> Make b -> Make c #

(*>) :: Make a -> Make b -> Make b #

(<*) :: Make a -> Make b -> Make a #

Functor Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

fmap :: (a -> b) -> Make a -> Make b #

(<$) :: a -> Make b -> Make a #

Monad Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

(>>=) :: Make a -> (a -> Make b) -> Make b #

(>>) :: Make a -> Make b -> Make b #

return :: a -> Make a #

MonadBaseControl IO Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Associated Types

type StM Make a #

Methods

liftBaseWith :: (RunInBase Make IO -> IO a) -> Make a #

restoreM :: StM Make a -> Make a #

MonadError MultipleErrors Make # 
Instance details

Defined in Language.PureScript.Make.Monad

MonadReader Options Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

ask :: Make Options #

local :: (Options -> Options) -> Make a -> Make a #

reader :: (Options -> a) -> Make a #

MonadWriter MultipleErrors Make # 
Instance details

Defined in Language.PureScript.Make.Monad

MonadBase IO Make # 
Instance details

Defined in Language.PureScript.Make.Monad

Methods

liftBase :: IO α -> Make α #

type StM Make a # 
Instance details

Defined in Language.PureScript.Make.Monad

data SourcePos #

Source position information

Constructors

SourcePos 

Fields

Instances

Instances details
FromJSON SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

ToJSON SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Generic SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Associated Types

type Rep SourcePos :: Type -> Type #

Show SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Methods

showsPrec :: Int -> SourcePos -> ShowS #

show :: SourcePos -> String #

showList :: [SourcePos] -> ShowS #

NFData SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Methods

rnf :: SourcePos -> () #

Eq SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Ord SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Serialise SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

type Rep SourcePos # 
Instance details

Defined in Language.PureScript.AST.SourcePos

type Rep SourcePos = D1 ('MetaData "SourcePos" "Language.PureScript.AST.SourcePos" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "SourcePos" 'PrefixI 'True) (S1 ('MetaSel ('Just "sourcePosLine") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "sourcePosColumn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

data SourceSpan #

Constructors

SourceSpan 

Fields

Instances

Instances details
FromJSON SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

ToJSON SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Generic SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Associated Types

type Rep SourceSpan :: Type -> Type #

Show SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Methods

showsPrec :: Int -> SourceSpan -> ShowS #

show :: SourceSpan -> String #

showList :: [SourceSpan] -> ShowS #

NFData SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Methods

rnf :: SourceSpan -> () #

Eq SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Ord SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

Serialise SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

FromJSON (Constraint SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

FromJSON (Type SourceAnn) # 
Instance details

Defined in Language.PureScript.Types

type Rep SourceSpan # 
Instance details

Defined in Language.PureScript.AST.SourcePos

type Rep SourceSpan = D1 ('MetaData "SourceSpan" "Language.PureScript.AST.SourcePos" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "SourceSpan" 'PrefixI 'True) (S1 ('MetaSel ('Just "spanName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "spanStart") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourcePos) :*: S1 ('MetaSel ('Just "spanEnd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourcePos))))

newtype OpName (a :: OpNameType) #

Operator alias names.

Constructors

OpName 

Fields

Instances

Instances details
FromJSON (OpName a) # 
Instance details

Defined in Language.PureScript.Names

ToJSON (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Generic (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep (OpName a) :: Type -> Type #

Methods

from :: OpName a -> Rep (OpName a) x #

to :: Rep (OpName a) x -> OpName a #

Show (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> OpName a -> ShowS #

show :: OpName a -> String #

showList :: [OpName a] -> ShowS #

NFData (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: OpName a -> () #

Eq (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

(==) :: OpName a -> OpName a -> Bool #

(/=) :: OpName a -> OpName a -> Bool #

Ord (OpName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

compare :: OpName a -> OpName a -> Ordering #

(<) :: OpName a -> OpName a -> Bool #

(<=) :: OpName a -> OpName a -> Bool #

(>) :: OpName a -> OpName a -> Bool #

(>=) :: OpName a -> OpName a -> Bool #

max :: OpName a -> OpName a -> OpName a #

min :: OpName a -> OpName a -> OpName a #

Serialise (OpName a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (OpName a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (OpName a) = D1 ('MetaData "OpName" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'True) (C1 ('MetaCons "OpName" 'PrefixI 'True) (S1 ('MetaSel ('Just "runOpName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data OpNameType #

The closed set of operator alias types.

newtype ProperName (a :: ProperNameType) #

Proper names, i.e. capitalized names for e.g. module names, type//data constructors.

Constructors

ProperName 

Fields

Instances

Instances details
FromJSON (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

ToJSON (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Generic (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep (ProperName a) :: Type -> Type #

Methods

from :: ProperName a -> Rep (ProperName a) x #

to :: Rep (ProperName a) x -> ProperName a #

Show (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> ProperName a -> ShowS #

show :: ProperName a -> String #

showList :: [ProperName a] -> ShowS #

NFData (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: ProperName a -> () #

Eq (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Methods

(==) :: ProperName a -> ProperName a -> Bool #

(/=) :: ProperName a -> ProperName a -> Bool #

Ord (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

Serialise (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (ProperName a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (ProperName a) = D1 ('MetaData "ProperName" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'True) (C1 ('MetaCons "ProperName" 'PrefixI 'True) (S1 ('MetaSel ('Just "runProperName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data ProperNameType #

The closed set of proper name types.

data Qualified a #

A qualified name, i.e. a name with an optional module name

Constructors

Qualified QualifiedBy a 

Instances

Instances details
Foldable Qualified # 
Instance details

Defined in Language.PureScript.Names

Methods

fold :: Monoid m => Qualified m -> m #

foldMap :: Monoid m => (a -> m) -> Qualified a -> m #

foldMap' :: Monoid m => (a -> m) -> Qualified a -> m

foldr :: (a -> b -> b) -> b -> Qualified a -> b #

foldr' :: (a -> b -> b) -> b -> Qualified a -> b #

foldl :: (b -> a -> b) -> b -> Qualified a -> b #

foldl' :: (b -> a -> b) -> b -> Qualified a -> b #

foldr1 :: (a -> a -> a) -> Qualified a -> a #

foldl1 :: (a -> a -> a) -> Qualified a -> a #

toList :: Qualified a -> [a] #

null :: Qualified a -> Bool #

length :: Qualified a -> Int #

elem :: Eq a => a -> Qualified a -> Bool #

maximum :: Ord a => Qualified a -> a #

minimum :: Ord a => Qualified a -> a #

sum :: Num a => Qualified a -> a #

product :: Num a => Qualified a -> a #

Traversable Qualified # 
Instance details

Defined in Language.PureScript.Names

Methods

traverse :: Applicative f => (a -> f b) -> Qualified a -> f (Qualified b) #

sequenceA :: Applicative f => Qualified (f a) -> f (Qualified a)

mapM :: Monad m => (a -> m b) -> Qualified a -> m (Qualified b)

sequence :: Monad m => Qualified (m a) -> m (Qualified a)

Functor Qualified # 
Instance details

Defined in Language.PureScript.Names

Methods

fmap :: (a -> b) -> Qualified a -> Qualified b #

(<$) :: a -> Qualified b -> Qualified a #

FromJSON a => FromJSON (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

ToJSON a => ToJSON (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Generic (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep (Qualified a) :: Type -> Type #

Methods

from :: Qualified a -> Rep (Qualified a) x #

to :: Rep (Qualified a) x -> Qualified a #

Show a => Show (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> Qualified a -> ShowS #

show :: Qualified a -> String #

showList :: [Qualified a] -> ShowS #

NFData a => NFData (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: Qualified a -> () #

Eq a => Eq (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Methods

(==) :: Qualified a -> Qualified a -> Bool #

(/=) :: Qualified a -> Qualified a -> Bool #

Ord a => Ord (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

Serialise a => Serialise (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (Qualified a) # 
Instance details

Defined in Language.PureScript.Names

type Rep (Qualified a) = D1 ('MetaData "Qualified" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Qualified" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 QualifiedBy) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

data Binder #

Data type for binders

Constructors

NullBinder

Wildcard binder

LiteralBinder SourceSpan (Literal Binder)

A binder which matches a literal

VarBinder SourceSpan Ident

A binder which binds an identifier

ConstructorBinder SourceSpan (Qualified (ProperName 'ConstructorName)) [Binder]

A binder which matches a data constructor

OpBinder SourceSpan (Qualified (OpName 'ValueOpName))

A operator alias binder. During the rebracketing phase of desugaring, this data constructor will be removed.

BinaryNoParensBinder Binder Binder Binder

Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed.

ParensInBinder Binder

Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed.

Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching.

NamedBinder SourceSpan Ident Binder

A binder which binds its input to an identifier

PositionedBinder SourceSpan [Comment] Binder

A binder with source position information

TypedBinder SourceType Binder

A binder with a type annotation

Instances

Instances details
Show Binder # 
Instance details

Defined in Language.PureScript.AST.Binders

Methods

showsPrec :: Int -> Binder -> ShowS #

show :: Binder -> String #

showList :: [Binder] -> ShowS #

Eq Binder # 
Instance details

Defined in Language.PureScript.AST.Binders

Methods

(==) :: Binder -> Binder -> Bool #

(/=) :: Binder -> Binder -> Bool #

Ord Binder # 
Instance details

Defined in Language.PureScript.AST.Binders

type SourceAnn = (SourceSpan, [Comment]) #

Source annotation - position information and comments.

newtype ModuleName #

Module names

Constructors

ModuleName Text 

Instances

Instances details
FromJSON ModuleName # 
Instance details

Defined in Language.PureScript.Names

FromJSONKey ModuleName # 
Instance details

Defined in Language.PureScript.Names

ToJSON ModuleName # 
Instance details

Defined in Language.PureScript.Names

ToJSONKey ModuleName # 
Instance details

Defined in Language.PureScript.Names

Generic ModuleName # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep ModuleName :: Type -> Type #

Show ModuleName # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> ModuleName -> ShowS #

show :: ModuleName -> String #

showList :: [ModuleName] -> ShowS #

NFData ModuleName # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: ModuleName -> () #

Eq ModuleName # 
Instance details

Defined in Language.PureScript.Names

Ord ModuleName # 
Instance details

Defined in Language.PureScript.Names

Serialise ModuleName # 
Instance details

Defined in Language.PureScript.Names

type Rep ModuleName # 
Instance details

Defined in Language.PureScript.Names

type Rep ModuleName = D1 ('MetaData "ModuleName" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'True) (C1 ('MetaCons "ModuleName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data QualifiedBy #

Instances

Instances details
Generic QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep QualifiedBy :: Type -> Type #

Show QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> QualifiedBy -> ShowS #

show :: QualifiedBy -> String #

showList :: [QualifiedBy] -> ShowS #

NFData QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: QualifiedBy -> () #

Eq QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

Ord QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

Serialise QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

type Rep QualifiedBy # 
Instance details

Defined in Language.PureScript.Names

type Rep QualifiedBy = D1 ('MetaData "QualifiedBy" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "BySourcePos" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourcePos)) :+: C1 ('MetaCons "ByModuleName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)))

data DataDeclType #

The type ('data' or 'newtype') of a data type declaration

Constructors

Data

A standard data constructor

Newtype

A newtype constructor

Instances

Instances details
FromJSON DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

ToJSON DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Generic DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep DataDeclType :: Type -> Type #

Show DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> DataDeclType -> ShowS #

show :: DataDeclType -> String #

showList :: [DataDeclType] -> ShowS #

NFData DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: DataDeclType -> () #

Eq DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Ord DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

Serialise DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

type Rep DataDeclType # 
Instance details

Defined in Language.PureScript.Environment

type Rep DataDeclType = D1 ('MetaData "DataDeclType" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Data" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Newtype" 'PrefixI 'False) (U1 :: Type -> Type))

data FunctionalDependency #

A functional dependency indicates a relationship between two sets of type arguments in a class declaration.

Constructors

FunctionalDependency 

Fields

Instances

Instances details
FromJSON FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

ToJSON FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

Generic FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep FunctionalDependency :: Type -> Type #

Show FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

NFData FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: FunctionalDependency -> () #

Serialise FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

type Rep FunctionalDependency # 
Instance details

Defined in Language.PureScript.Environment

type Rep FunctionalDependency = D1 ('MetaData "FunctionalDependency" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "FunctionalDependency" 'PrefixI 'True) (S1 ('MetaSel ('Just "fdDeterminers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Int]) :*: S1 ('MetaSel ('Just "fdDetermined") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Int])))

data NameKind #

A flag for whether a name is for an private or public value - only public values will be included in a generated externs file.

Constructors

Private

A private value introduced as an artifact of code generation (class instances, class member accessors, etc.)

Public

A public value for a module member or foreign import declaration

External

A name for member introduced by foreign import

Instances

Instances details
Generic NameKind # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep NameKind :: Type -> Type #

Methods

from :: NameKind -> Rep NameKind x #

to :: Rep NameKind x -> NameKind #

Show NameKind # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> NameKind -> ShowS #

show :: NameKind -> String #

showList :: [NameKind] -> ShowS #

NFData NameKind # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: NameKind -> () #

Eq NameKind # 
Instance details

Defined in Language.PureScript.Environment

Serialise NameKind # 
Instance details

Defined in Language.PureScript.Environment

type Rep NameKind # 
Instance details

Defined in Language.PureScript.Environment

type Rep NameKind = D1 ('MetaData "NameKind" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Private" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Public" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "External" 'PrefixI 'False) (U1 :: Type -> Type)))

data Declaration #

The data type of declarations

Constructors

DataDeclaration SourceAnn DataDeclType (ProperName 'TypeName) [(Text, Maybe SourceType)] [DataConstructorDeclaration]

A data type declaration (data or newtype, name, arguments, data constructors)

DataBindingGroupDeclaration (NonEmpty Declaration)

A minimal mutually recursive set of data type declarations

TypeSynonymDeclaration SourceAnn (ProperName 'TypeName) [(Text, Maybe SourceType)] SourceType

A type synonym declaration (name, arguments, type)

KindDeclaration SourceAnn KindSignatureFor (ProperName 'TypeName) SourceType

A kind signature declaration

RoleDeclaration !RoleDeclarationData

A role declaration (name, roles)

TypeDeclaration !TypeDeclarationData

A type declaration for a value (name, ty)

ValueDeclaration !(ValueDeclarationData [GuardedExpr])

A value declaration (name, top-level binders, optional guard, value)

BoundValueDeclaration SourceAnn Binder Expr

A declaration paired with pattern matching in let-in expression (binder, optional guard, value)

BindingGroupDeclaration (NonEmpty ((SourceAnn, Ident), NameKind, Expr))

A minimal mutually recursive set of value declarations

ExternDeclaration SourceAnn Ident SourceType

A foreign import declaration (name, type)

ExternDataDeclaration SourceAnn (ProperName 'TypeName) SourceType

A data type foreign import (name, kind)

FixityDeclaration SourceAnn (Either ValueFixity TypeFixity)

A fixity declaration

ImportDeclaration SourceAnn ModuleName ImportDeclarationType (Maybe ModuleName)

A module import (module name, qualifiedunqualifiedhiding, optional "qualified as" name)

TypeClassDeclaration SourceAnn (ProperName 'ClassName) [(Text, Maybe SourceType)] [SourceConstraint] [FunctionalDependency] [Declaration]

A type class declaration (name, argument, implies, member declarations)

TypeInstanceDeclaration SourceAnn SourceAnn ChainId Integer (Either Text Ident) [SourceConstraint] (Qualified (ProperName 'ClassName)) [SourceType] TypeInstanceBody

A type instance declaration (instance chain, chain index, name, dependencies, class name, instance types, member declarations)

The first SourceAnn serves as the annotation for the entire declaration, while the second SourceAnn serves as the annotation for the type class and its arguments.

Instances

Instances details
Show Declaration # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> Declaration -> ShowS #

show :: Declaration -> String #

showList :: [Declaration] -> ShowS #

data DeclarationRef #

An item in a list of explicit imports or exports

Constructors

TypeClassRef SourceSpan (ProperName 'ClassName)

A type class

TypeOpRef SourceSpan (OpName 'TypeOpName)

A type operator

TypeRef SourceSpan (ProperName 'TypeName) (Maybe [ProperName 'ConstructorName])

A type constructor with data constructors

ValueRef SourceSpan Ident

A value

ValueOpRef SourceSpan (OpName 'ValueOpName)

A value-level operator

TypeInstanceRef SourceSpan Ident NameSource

A type class instance, created during typeclass desugaring

ModuleRef SourceSpan ModuleName

A module, in its entirety

ReExportRef SourceSpan ExportSource DeclarationRef

A value re-exported from another module. These will be inserted during elaboration in name desugaring.

Instances

Instances details
FromJSON DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

ToJSON DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Generic DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Associated Types

type Rep DeclarationRef :: Type -> Type #

Show DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> DeclarationRef -> ShowS #

show :: DeclarationRef -> String #

showList :: [DeclarationRef] -> ShowS #

NFData DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

rnf :: DeclarationRef -> () #

Eq DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Ord DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

Serialise DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep DeclarationRef # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep DeclarationRef = D1 ('MetaData "DeclarationRef" "Language.PureScript.AST.Declarations" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (((C1 ('MetaCons "TypeClassRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ClassName))) :+: C1 ('MetaCons "TypeOpRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'TypeOpName)))) :+: (C1 ('MetaCons "TypeRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [ProperName 'ConstructorName])))) :+: C1 ('MetaCons "ValueRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)))) :+: ((C1 ('MetaCons "ValueOpRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'ValueOpName))) :+: C1 ('MetaCons "TypeInstanceRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSource)))) :+: (C1 ('MetaCons "ModuleRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons "ReExportRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ExportSource) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DeclarationRef))))))

data CaseAlternative #

An alternative in a case statement

Constructors

CaseAlternative 

Fields

Instances

Instances details
Show CaseAlternative # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> CaseAlternative -> ShowS #

show :: CaseAlternative -> String #

showList :: [CaseAlternative] -> ShowS #

data DoNotationElement #

A statement in a do-notation block

Constructors

DoNotationValue Expr

A monadic value without a binder

DoNotationBind Binder Expr

A monadic value with a binder

DoNotationLet [Declaration]

A let statement, i.e. a pure value with a binder

PositionedDoNotationElement SourceSpan [Comment] DoNotationElement

A do notation element with source position information

Instances

Instances details
Show DoNotationElement # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> DoNotationElement -> ShowS #

show :: DoNotationElement -> String #

showList :: [DoNotationElement] -> ShowS #

data Expr #

Data type for expressions and terms

Constructors

Literal SourceSpan (Literal Expr)

A literal value

UnaryMinus SourceSpan Expr

A prefix -, will be desugared

BinaryNoParens Expr Expr Expr

Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed.

Parens Expr

Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed.

Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching.

Accessor PSString Expr

An record property accessor expression (e.g. `obj.x` or `_.x`). Anonymous arguments will be removed during desugaring and expanded into a lambda that reads a property from a record.

ObjectUpdate Expr [(PSString, Expr)]

Partial record update

ObjectUpdateNested Expr (PathTree Expr)

Object updates with nested support: `x { foo { bar = e } }` Replaced during desugaring into a Let and nested ObjectUpdates

Abs Binder Expr

Function introduction

App Expr Expr

Function application

VisibleTypeApp Expr SourceType

A type application (e.g. `f @Int`)

Unused Expr

Hint that an expression is unused. This is used to ignore type class dictionaries that are necessarily empty. The inner expression lets us solve subgoals before eliminating the whole expression. The code gen will render this as undefined, regardless of what the inner expression is.

Var SourceSpan (Qualified Ident)

Variable

Op SourceSpan (Qualified (OpName 'ValueOpName))

An operator. This will be desugared into a function during the "operators" phase of desugaring.

IfThenElse Expr Expr Expr

Conditional (if-then-else expression)

Constructor SourceSpan (Qualified (ProperName 'ConstructorName))

A data constructor

Case [Expr] [CaseAlternative]

A case expression. During the case expansion phase of desugaring, top-level binders will get desugared into case expressions, hence the need for guards and multiple binders per branch here.

TypedValue Bool Expr SourceType

A value with a type annotation

Let WhereProvenance [Declaration] Expr

A let binding

Do (Maybe ModuleName) [DoNotationElement]

A do-notation block

Ado (Maybe ModuleName) [DoNotationElement] Expr

An ado-notation block

TypeClassDictionary SourceConstraint (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))) [ErrorMessageHint]

A placeholder for a type class dictionary to be inserted later. At the end of type checking, these placeholders will be replaced with actual expressions representing type classes dictionaries which can be evaluated at runtime. The constructor arguments represent (in order): whether or not to look at superclass implementations when searching for a dictionary, the type class name and instance type, and the type class dictionaries in scope.

DeferredDictionary (Qualified (ProperName 'ClassName)) [SourceType]

A placeholder for a superclass dictionary to be turned into a TypeClassDictionary during typechecking

DerivedInstancePlaceholder (Qualified (ProperName 'ClassName)) InstanceDerivationStrategy

A placeholder for a type class instance to be derived during typechecking

AnonymousArgument

A placeholder for an anonymous function argument

Hole Text

A typed hole that will be turned into a hint/error during typechecking

PositionedValue SourceSpan [Comment] Expr

A value with source position information

Instances

Instances details
Show Expr # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

data Guard #

A guard is just a boolean-valued expression that appears alongside a set of binders

Instances

Instances details
Show Guard # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> Guard -> ShowS #

show :: Guard -> String #

showList :: [Guard] -> ShowS #

data GuardedExpr #

The right hand side of a binder in value declarations and case expressions.

Constructors

GuardedExpr [Guard] Expr 

Instances

Instances details
Show GuardedExpr # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> GuardedExpr -> ShowS #

show :: GuardedExpr -> String #

showList :: [GuardedExpr] -> ShowS #

data TypeDeclarationData #

A type declaration assigns a type to an identifier, eg:

identity :: forall a. a -> a

In this example identity is the identifier and forall a. a -> a the type.

data TypeInstanceBody #

The members of a type class instance declaration

Constructors

DerivedInstance

This is a derived instance

NewtypeInstance

This is an instance derived from a newtype

ExplicitInstance [Declaration]

This is a regular (explicit) instance

Instances

Instances details
Show TypeInstanceBody # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> TypeInstanceBody -> ShowS #

show :: TypeInstanceBody -> String #

showList :: [TypeInstanceBody] -> ShowS #

data ValueDeclarationData a #

A value declaration assigns a name and potential binders, to an expression (or multiple guarded expressions).

double x = x + x

In this example double is the identifier, x is a binder and x + x is the expression.

Constructors

ValueDeclarationData 

Fields

Instances

Instances details
Foldable ValueDeclarationData # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fold :: Monoid m => ValueDeclarationData m -> m #

foldMap :: Monoid m => (a -> m) -> ValueDeclarationData a -> m #

foldMap' :: Monoid m => (a -> m) -> ValueDeclarationData a -> m

foldr :: (a -> b -> b) -> b -> ValueDeclarationData a -> b #

foldr' :: (a -> b -> b) -> b -> ValueDeclarationData a -> b #

foldl :: (b -> a -> b) -> b -> ValueDeclarationData a -> b #

foldl' :: (b -> a -> b) -> b -> ValueDeclarationData a -> b #

foldr1 :: (a -> a -> a) -> ValueDeclarationData a -> a #

foldl1 :: (a -> a -> a) -> ValueDeclarationData a -> a #

toList :: ValueDeclarationData a -> [a] #

null :: ValueDeclarationData a -> Bool #

length :: ValueDeclarationData a -> Int #

elem :: Eq a => a -> ValueDeclarationData a -> Bool #

maximum :: Ord a => ValueDeclarationData a -> a #

minimum :: Ord a => ValueDeclarationData a -> a #

sum :: Num a => ValueDeclarationData a -> a #

product :: Num a => ValueDeclarationData a -> a #

Traversable ValueDeclarationData # 
Instance details

Defined in Language.PureScript.AST.Declarations

Functor ValueDeclarationData # 
Instance details

Defined in Language.PureScript.AST.Declarations

Show a => Show (ValueDeclarationData a) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> ValueDeclarationData a -> ShowS #

show :: ValueDeclarationData a -> String #

showList :: [ValueDeclarationData a] -> ShowS #

data ErrorMessageHint #

Error message hints, providing more detailed information about failure.

Instances

Instances details
Show ErrorMessageHint # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> ErrorMessageHint -> ShowS #

show :: ErrorMessageHint -> String #

showList :: [ErrorMessageHint] -> ShowS #

data SimpleErrorMessage #

A type of error messages

Constructors

InternalCompilerError Text Text 
ModuleNotFound ModuleName 
ErrorParsingFFIModule FilePath (Maybe ErrorMessage) 
ErrorParsingCSTModule ParserError 
WarningParsingCSTModule ParserWarning 
MissingFFIModule ModuleName 
UnnecessaryFFIModule ModuleName FilePath 
MissingFFIImplementations ModuleName [Ident] 
UnusedFFIImplementations ModuleName [Ident] 
InvalidFFIIdentifier ModuleName Text 
DeprecatedFFIPrime ModuleName Text 
DeprecatedFFICommonJSModule ModuleName FilePath 
UnsupportedFFICommonJSExports ModuleName [Text] 
UnsupportedFFICommonJSImports ModuleName [Text] 
FileIOError Text IOError

A description of what we were trying to do, and the error which occurred

InfiniteType SourceType 
InfiniteKind SourceType 
MultipleValueOpFixities (OpName 'ValueOpName) 
MultipleTypeOpFixities (OpName 'TypeOpName) 
OrphanTypeDeclaration Ident 
OrphanKindDeclaration (ProperName 'TypeName) 
OrphanRoleDeclaration (ProperName 'TypeName) 
RedefinedIdent Ident 
OverlappingNamesInLet Ident 
UnknownName (Qualified Name) 
UnknownImport ModuleName Name 
UnknownImportDataConstructor ModuleName (ProperName 'TypeName) (ProperName 'ConstructorName) 
UnknownExport Name 
UnknownExportDataConstructor (ProperName 'TypeName) (ProperName 'ConstructorName) 
ScopeConflict Name [ModuleName] 
ScopeShadowing Name (Maybe ModuleName) [ModuleName] 
DeclConflict Name Name 
ExportConflict (Qualified Name) (Qualified Name) 
DuplicateModule ModuleName 
DuplicateTypeClass (ProperName 'ClassName) SourceSpan 
DuplicateInstance Ident SourceSpan 
DuplicateTypeArgument Text 
InvalidDoBind 
InvalidDoLet 
CycleInDeclaration Ident 
CycleInTypeSynonym (NonEmpty (ProperName 'TypeName)) 
CycleInTypeClassDeclaration (NonEmpty (Qualified (ProperName 'ClassName))) 
CycleInKindDeclaration (NonEmpty (Qualified (ProperName 'TypeName))) 
CycleInModules (NonEmpty ModuleName) 
NameIsUndefined Ident 
UndefinedTypeVariable (ProperName 'TypeName) 
PartiallyAppliedSynonym (Qualified (ProperName 'TypeName)) 
EscapedSkolem Text (Maybe SourceSpan) SourceType 
TypesDoNotUnify SourceType SourceType 
KindsDoNotUnify SourceType SourceType 
ConstrainedTypeUnified SourceType SourceType 
OverlappingInstances (Qualified (ProperName 'ClassName)) [SourceType] [Qualified (Either SourceType Ident)] 
NoInstanceFound 

Fields

AmbiguousTypeVariables SourceType [(Text, Int)] 
UnknownClass (Qualified (ProperName 'ClassName)) 
PossiblyInfiniteInstance (Qualified (ProperName 'ClassName)) [SourceType] 
PossiblyInfiniteCoercibleInstance 
CannotDerive (Qualified (ProperName 'ClassName)) [SourceType] 
InvalidDerivedInstance (Qualified (ProperName 'ClassName)) [SourceType] Int 
ExpectedTypeConstructor (Qualified (ProperName 'ClassName)) [SourceType] SourceType 
InvalidNewtypeInstance (Qualified (ProperName 'ClassName)) [SourceType] 
MissingNewtypeSuperclassInstance (Qualified (ProperName 'ClassName)) (Qualified (ProperName 'ClassName)) [SourceType] 
UnverifiableSuperclassInstance (Qualified (ProperName 'ClassName)) (Qualified (ProperName 'ClassName)) [SourceType] 
CannotFindDerivingType (ProperName 'TypeName) 
DuplicateLabel Label (Maybe Expr) 
DuplicateValueDeclaration Ident 
ArgListLengthsDiffer Ident 
OverlappingArgNames (Maybe Ident) 
MissingClassMember (NonEmpty (Ident, SourceType)) 
ExtraneousClassMember Ident (Qualified (ProperName 'ClassName)) 
ExpectedType SourceType SourceType 
IncorrectConstructorArity (Qualified (ProperName 'ConstructorName)) Int Int

constructor name, expected argument count, actual argument count

ExprDoesNotHaveType Expr SourceType 
PropertyIsMissing Label 
AdditionalProperty Label 
OrphanInstance Ident (Qualified (ProperName 'ClassName)) (Set ModuleName) [SourceType] 
InvalidNewtype (ProperName 'TypeName) 
InvalidInstanceHead SourceType 
TransitiveExportError DeclarationRef [DeclarationRef] 
TransitiveDctorExportError DeclarationRef [ProperName 'ConstructorName] 
HiddenConstructors DeclarationRef (Qualified (ProperName 'ClassName)) 
ShadowedName Ident 
ShadowedTypeVar Text 
UnusedTypeVar Text 
UnusedName Ident 
UnusedDeclaration Ident 
WildcardInferredType SourceType Context 
HoleInferredType Text SourceType Context (Maybe TypeSearch) 
MissingTypeDeclaration Ident SourceType 
MissingKindDeclaration KindSignatureFor (ProperName 'TypeName) SourceType 
OverlappingPattern [[Binder]] Bool 
IncompleteExhaustivityCheck 
ImportHidingModule ModuleName 
UnusedImport ModuleName (Maybe ModuleName) 
UnusedExplicitImport ModuleName [Name] (Maybe ModuleName) [DeclarationRef] 
UnusedDctorImport ModuleName (ProperName 'TypeName) (Maybe ModuleName) [DeclarationRef] 
UnusedDctorExplicitImport ModuleName (ProperName 'TypeName) [ProperName 'ConstructorName] (Maybe ModuleName) [DeclarationRef] 
DuplicateSelectiveImport ModuleName 
DuplicateImport ModuleName ImportDeclarationType (Maybe ModuleName) 
DuplicateImportRef Name 
DuplicateExportRef Name 
IntOutOfRange Integer Text Integer Integer 
ImplicitQualifiedImport ModuleName ModuleName [DeclarationRef] 
ImplicitQualifiedImportReExport ModuleName ModuleName [DeclarationRef] 
ImplicitImport ModuleName [DeclarationRef] 
HidingImport ModuleName [DeclarationRef] 
CaseBinderLengthDiffers Int [Binder] 
IncorrectAnonymousArgument 
InvalidOperatorInBinder (Qualified (OpName 'ValueOpName)) (Qualified Ident) 
CannotGeneralizeRecursiveFunction Ident SourceType 
CannotDeriveNewtypeForData (ProperName 'TypeName) 
ExpectedWildcard (ProperName 'TypeName) 
CannotUseBindWithDo Ident 
ClassInstanceArityMismatch Ident (Qualified (ProperName 'ClassName)) Int Int

instance name, type class, expected argument count, actual argument count

UserDefinedWarning SourceType

a user-defined warning raised by using the Warn type class

UnusableDeclaration Ident [[Text]]

a declaration couldn't be used because it contained free variables

CannotDefinePrimModules ModuleName 
MixedAssociativityError (NonEmpty (Qualified (OpName 'AnyOpName), Associativity)) 
NonAssociativeError (NonEmpty (Qualified (OpName 'AnyOpName))) 
QuantificationCheckFailureInKind Text 
QuantificationCheckFailureInType [Int] SourceType 
VisibleQuantificationCheckFailureInType Text 
UnsupportedTypeInKind SourceType 
RoleMismatch

Declared role was more permissive than inferred.

Fields

  • Text

    Type variable in question

  • Role

    inferred role

  • Role

    declared role

InvalidCoercibleInstanceDeclaration [SourceType] 
UnsupportedRoleDeclaration 
RoleDeclarationArityMismatch (ProperName 'TypeName) Int Int 
DuplicateRoleDeclaration (ProperName 'TypeName) 
CannotDeriveInvalidConstructorArg (Qualified (ProperName 'ClassName)) [Qualified (ProperName 'ClassName)] Bool 
CannotSkipTypeApplication SourceType 
CannotApplyExpressionOfTypeOnType SourceType SourceType 

Instances

Instances details
Show SimpleErrorMessage # 
Instance details

Defined in Language.PureScript.Errors

Methods

showsPrec :: Int -> SimpleErrorMessage -> ShowS #

show :: SimpleErrorMessage -> String #

showList :: [SimpleErrorMessage] -> ShowS #

data InternalIdentData #

This type is meant to be extended with any new uses for idents that come along. Adding constructors to this type is cheaper than adding them to Ident because functions that match on Ident can ignore all InternalIdents with a single pattern, and thus don't have to change if a new InternalIdentData constructor is created.

Constructors

RuntimeLazyFactory 
Lazy !Text 

Instances

Instances details
FromJSON InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

ToJSON InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Generic InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Associated Types

type Rep InternalIdentData :: Type -> Type #

Show InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Methods

showsPrec :: Int -> InternalIdentData -> ShowS #

show :: InternalIdentData -> String #

showList :: [InternalIdentData] -> ShowS #

NFData InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Methods

rnf :: InternalIdentData -> () #

Eq InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Ord InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

Serialise InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

type Rep InternalIdentData # 
Instance details

Defined in Language.PureScript.Names

type Rep InternalIdentData = D1 ('MetaData "InternalIdentData" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "RuntimeLazyFactory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Lazy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)))

data RebracketCaller #

Indicates whether the rebracketModule is being called with the full desugar pass run via `purs compile` or whether only the partial desugar pass is run via `purs docs`. This indication is needed to prevent a `purs docs` error when using `case _ of` syntax in a type class instance.

Instances

Instances details
Show RebracketCaller # 
Instance details

Defined in Language.PureScript.Sugar.Operators

Methods

showsPrec :: Int -> RebracketCaller -> ShowS #

show :: RebracketCaller -> String #

showList :: [RebracketCaller] -> ShowS #

Eq RebracketCaller # 
Instance details

Defined in Language.PureScript.Sugar.Operators

data TypeVarVisibility #

Instances

Instances details
FromJSON TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

ToJSON TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Generic TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep TypeVarVisibility :: Type -> Type #

Show TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> TypeVarVisibility -> ShowS #

show :: TypeVarVisibility -> String #

showList :: [TypeVarVisibility] -> ShowS #

NFData TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: TypeVarVisibility -> () #

Eq TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Ord TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

Serialise TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

type Rep TypeVarVisibility # 
Instance details

Defined in Language.PureScript.Types

type Rep TypeVarVisibility = D1 ('MetaData "TypeVarVisibility" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "TypeVarVisible" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeVarInvisible" 'PrefixI 'False) (U1 :: Type -> Type))

data ConstraintData #

Additional data relevant to type class constraints

Constructors

PartialConstraintData [[Text]] Bool

Data to accompany a Partial constraint generated by the exhaustivity checker. It contains (rendered) binder information for those binders which were not matched, and a flag indicating whether the list was truncated or not. Note: we use Text here because using Binder would introduce a cyclic dependency in the module graph.

Instances

Instances details
FromJSON ConstraintData # 
Instance details

Defined in Language.PureScript.Types

ToJSON ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Generic ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep ConstraintData :: Type -> Type #

Show ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> ConstraintData -> ShowS #

show :: ConstraintData -> String #

showList :: [ConstraintData] -> ShowS #

NFData ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: ConstraintData -> () #

Eq ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Ord ConstraintData # 
Instance details

Defined in Language.PureScript.Types

Serialise ConstraintData # 
Instance details

Defined in Language.PureScript.Types

type Rep ConstraintData # 
Instance details

Defined in Language.PureScript.Types

type Rep ConstraintData = D1 ('MetaData "ConstraintData" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "PartialConstraintData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[Text]]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))

data RowListItem a #

Constructors

RowListItem 

Instances

Instances details
Foldable RowListItem # 
Instance details

Defined in Language.PureScript.Types

Methods

fold :: Monoid m => RowListItem m -> m #

foldMap :: Monoid m => (a -> m) -> RowListItem a -> m #

foldMap' :: Monoid m => (a -> m) -> RowListItem a -> m

foldr :: (a -> b -> b) -> b -> RowListItem a -> b #

foldr' :: (a -> b -> b) -> b -> RowListItem a -> b #

foldl :: (b -> a -> b) -> b -> RowListItem a -> b #

foldl' :: (b -> a -> b) -> b -> RowListItem a -> b #

foldr1 :: (a -> a -> a) -> RowListItem a -> a #

foldl1 :: (a -> a -> a) -> RowListItem a -> a #

toList :: RowListItem a -> [a] #

null :: RowListItem a -> Bool #

length :: RowListItem a -> Int #

elem :: Eq a => a -> RowListItem a -> Bool #

maximum :: Ord a => RowListItem a -> a #

minimum :: Ord a => RowListItem a -> a #

sum :: Num a => RowListItem a -> a #

product :: Num a => RowListItem a -> a #

Traversable RowListItem # 
Instance details

Defined in Language.PureScript.Types

Methods

traverse :: Applicative f => (a -> f b) -> RowListItem a -> f (RowListItem b) #

sequenceA :: Applicative f => RowListItem (f a) -> f (RowListItem a)

mapM :: Monad m => (a -> m b) -> RowListItem a -> m (RowListItem b)

sequence :: Monad m => RowListItem (m a) -> m (RowListItem a)

Functor RowListItem # 
Instance details

Defined in Language.PureScript.Types

Methods

fmap :: (a -> b) -> RowListItem a -> RowListItem b #

(<$) :: a -> RowListItem b -> RowListItem a #

Generic (RowListItem a) # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep (RowListItem a) :: Type -> Type #

Methods

from :: RowListItem a -> Rep (RowListItem a) x #

to :: Rep (RowListItem a) x -> RowListItem a #

Show a => Show (RowListItem a) # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> RowListItem a -> ShowS #

show :: RowListItem a -> String #

showList :: [RowListItem a] -> ShowS #

type Rep (RowListItem a) # 
Instance details

Defined in Language.PureScript.Types

type Rep (RowListItem a) = D1 ('MetaData "RowListItem" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "RowListItem" 'PrefixI 'True) (S1 ('MetaSel ('Just "rowListAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rowListLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label) :*: S1 ('MetaSel ('Just "rowListType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))))

data ExternsFile #

The data which will be serialized to an externs file

Constructors

ExternsFile 

Fields

Instances

Instances details
Generic ExternsFile # 
Instance details

Defined in Language.PureScript.Externs

Associated Types

type Rep ExternsFile :: Type -> Type #

Show ExternsFile # 
Instance details

Defined in Language.PureScript.Externs

Methods

showsPrec :: Int -> ExternsFile -> ShowS #

show :: ExternsFile -> String #

showList :: [ExternsFile] -> ShowS #

Serialise ExternsFile # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsFile # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsFile = D1 ('MetaData "ExternsFile" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsFile" 'PrefixI 'True) (((S1 ('MetaSel ('Just "efVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "efModuleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :*: (S1 ('MetaSel ('Just "efExports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeclarationRef]) :*: S1 ('MetaSel ('Just "efImports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsImport]))) :*: ((S1 ('MetaSel ('Just "efFixities") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsFixity]) :*: S1 ('MetaSel ('Just "efTypeFixities") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsTypeFixity])) :*: (S1 ('MetaSel ('Just "efDeclarations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsDeclaration]) :*: S1 ('MetaSel ('Just "efSourceSpan") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan)))))

data ExternsImport #

A module import in an externs file

Constructors

ExternsImport 

Fields

Instances

Instances details
Generic ExternsImport # 
Instance details

Defined in Language.PureScript.Externs

Associated Types

type Rep ExternsImport :: Type -> Type #

Show ExternsImport # 
Instance details

Defined in Language.PureScript.Externs

Methods

showsPrec :: Int -> ExternsImport -> ShowS #

show :: ExternsImport -> String #

showList :: [ExternsImport] -> ShowS #

Serialise ExternsImport # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsImport # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsImport = D1 ('MetaData "ExternsImport" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsImport" 'PrefixI 'True) (S1 ('MetaSel ('Just "eiModule") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName) :*: (S1 ('MetaSel ('Just "eiImportType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ImportDeclarationType) :*: S1 ('MetaSel ('Just "eiImportedAs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModuleName)))))

data ExternsFixity #

A fixity declaration in an externs file

Constructors

ExternsFixity 

Fields

Instances

Instances details
Generic ExternsFixity # 
Instance details

Defined in Language.PureScript.Externs

Associated Types

type Rep ExternsFixity :: Type -> Type #

Show ExternsFixity # 
Instance details

Defined in Language.PureScript.Externs

Methods

showsPrec :: Int -> ExternsFixity -> ShowS #

show :: ExternsFixity -> String #

showList :: [ExternsFixity] -> ShowS #

Serialise ExternsFixity # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsFixity # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsFixity = D1 ('MetaData "ExternsFixity" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsFixity" 'PrefixI 'True) ((S1 ('MetaSel ('Just "efAssociativity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Just "efPrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence)) :*: (S1 ('MetaSel ('Just "efOperator") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'ValueOpName)) :*: S1 ('MetaSel ('Just "efAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (Either Ident (ProperName 'ConstructorName)))))))

data ExternsTypeFixity #

A type fixity declaration in an externs file

Constructors

ExternsTypeFixity 

Fields

Instances

Instances details
Generic ExternsTypeFixity # 
Instance details

Defined in Language.PureScript.Externs

Associated Types

type Rep ExternsTypeFixity :: Type -> Type #

Show ExternsTypeFixity # 
Instance details

Defined in Language.PureScript.Externs

Methods

showsPrec :: Int -> ExternsTypeFixity -> ShowS #

show :: ExternsTypeFixity -> String #

showList :: [ExternsTypeFixity] -> ShowS #

Serialise ExternsTypeFixity # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsTypeFixity # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsTypeFixity = D1 ('MetaData "ExternsTypeFixity" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsTypeFixity" 'PrefixI 'True) ((S1 ('MetaSel ('Just "efTypeAssociativity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Just "efTypePrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence)) :*: (S1 ('MetaSel ('Just "efTypeOperator") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'TypeOpName)) :*: S1 ('MetaSel ('Just "efTypeAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'TypeName))))))

data ExternsDeclaration #

A type or value declaration appearing in an externs file

Instances

Instances details
Generic ExternsDeclaration # 
Instance details

Defined in Language.PureScript.Externs

Associated Types

type Rep ExternsDeclaration :: Type -> Type #

Show ExternsDeclaration # 
Instance details

Defined in Language.PureScript.Externs

Methods

showsPrec :: Int -> ExternsDeclaration -> ShowS #

show :: ExternsDeclaration -> String #

showList :: [ExternsDeclaration] -> ShowS #

Serialise ExternsDeclaration # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsDeclaration # 
Instance details

Defined in Language.PureScript.Externs

type Rep ExternsDeclaration = D1 ('MetaData "ExternsDeclaration" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "EDType" 'PrefixI 'True) (S1 ('MetaSel ('Just "edTypeName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edTypeKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType) :*: S1 ('MetaSel ('Just "edTypeDeclarationKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeKind))) :+: (C1 ('MetaCons "EDTypeSynonym" 'PrefixI 'True) (S1 ('MetaSel ('Just "edTypeSynonymName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edTypeSynonymArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: S1 ('MetaSel ('Just "edTypeSynonymType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType))) :+: C1 ('MetaCons "EDDataConstructor" 'PrefixI 'True) ((S1 ('MetaSel ('Just "edDataCtorName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ConstructorName)) :*: S1 ('MetaSel ('Just "edDataCtorOrigin") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataDeclType)) :*: (S1 ('MetaSel ('Just "edDataCtorTypeCtor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edDataCtorType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType) :*: S1 ('MetaSel ('Just "edDataCtorFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Ident])))))) :+: (C1 ('MetaCons "EDValue" 'PrefixI 'True) (S1 ('MetaSel ('Just "edValueName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Just "edValueType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType)) :+: (C1 ('MetaCons "EDClass" 'PrefixI 'True) ((S1 ('MetaSel ('Just "edClassName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ClassName)) :*: (S1 ('MetaSel ('Just "edClassTypeArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: S1 ('MetaSel ('Just "edClassMembers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Ident, SourceType)]))) :*: (S1 ('MetaSel ('Just "edClassConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceConstraint]) :*: (S1 ('MetaSel ('Just "edFunctionalDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunctionalDependency]) :*: S1 ('MetaSel ('Just "edIsEmpty") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :+: C1 ('MetaCons "EDInstance" 'PrefixI 'True) (((S1 ('MetaSel ('Just "edInstanceClassName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'ClassName))) :*: S1 ('MetaSel ('Just "edInstanceName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :*: (S1 ('MetaSel ('Just "edInstanceForAll") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, SourceType)]) :*: (S1 ('MetaSel ('Just "edInstanceKinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceType]) :*: S1 ('MetaSel ('Just "edInstanceTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceType])))) :*: ((S1 ('MetaSel ('Just "edInstanceConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [SourceConstraint])) :*: S1 ('MetaSel ('Just "edInstanceChain") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ChainId))) :*: (S1 ('MetaSel ('Just "edInstanceChainIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer) :*: (S1 ('MetaSel ('Just "edInstanceNameSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSource) :*: S1 ('MetaSel ('Just "edInstanceSourceSpan") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan))))))))

data ImportDeclarationType #

The data type which specifies type of import declaration

Constructors

Implicit

An import with no explicit list: `import M`.

Explicit [DeclarationRef]

An import with an explicit list of references to import: `import M (foo)`

Hiding [DeclarationRef]

An import with a list of references to hide: `import M hiding (foo)`

Instances

Instances details
FromJSON ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

ToJSON ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

Generic ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

Associated Types

type Rep ImportDeclarationType :: Type -> Type #

Show ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

Eq ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

Serialise ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep ImportDeclarationType # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep ImportDeclarationType = D1 ('MetaData "ImportDeclarationType" "Language.PureScript.AST.Declarations" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Implicit" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Explicit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeclarationRef])) :+: C1 ('MetaCons "Hiding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeclarationRef]))))

data NameSource #

Constructors

UserNamed 
CompilerNamed 

Instances

Instances details
FromJSON NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

ToJSON NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Generic NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Associated Types

type Rep NameSource :: Type -> Type #

Show NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> NameSource -> ShowS #

show :: NameSource -> String #

showList :: [NameSource] -> ShowS #

NFData NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

rnf :: NameSource -> () #

Serialise NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep NameSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep NameSource = D1 ('MetaData "NameSource" "Language.PureScript.AST.Declarations" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "UserNamed" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CompilerNamed" 'PrefixI 'False) (U1 :: Type -> Type))

type Precedence = Integer #

A precedence level for an infix operator

data NameVisibility #

The visibility of a name in scope

Constructors

Undefined

The name is defined in the current binding group, but is not visible

Defined

The name is defined in the another binding group, or has been made visible by a function binder

Instances

Instances details
Generic NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep NameVisibility :: Type -> Type #

Show NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> NameVisibility -> ShowS #

show :: NameVisibility -> String #

showList :: [NameVisibility] -> ShowS #

NFData NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: NameVisibility -> () #

Eq NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

Serialise NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

type Rep NameVisibility # 
Instance details

Defined in Language.PureScript.Environment

type Rep NameVisibility = D1 ('MetaData "NameVisibility" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Undefined" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Defined" 'PrefixI 'False) (U1 :: Type -> Type))

data TypeClassData #

Information about a type class

Constructors

TypeClassData 

Fields

Instances

Instances details
Generic TypeClassData # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep TypeClassData :: Type -> Type #

Show TypeClassData # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> TypeClassData -> ShowS #

show :: TypeClassData -> String #

showList :: [TypeClassData] -> ShowS #

NFData TypeClassData # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: TypeClassData -> () #

type Rep TypeClassData # 
Instance details

Defined in Language.PureScript.Environment

type Rep TypeClassData = D1 ('MetaData "TypeClassData" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "TypeClassData" 'PrefixI 'True) ((S1 ('MetaSel ('Just "typeClassArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: (S1 ('MetaSel ('Just "typeClassMembers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Ident, SourceType)]) :*: S1 ('MetaSel ('Just "typeClassSuperclasses") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceConstraint]))) :*: ((S1 ('MetaSel ('Just "typeClassDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunctionalDependency]) :*: S1 ('MetaSel ('Just "typeClassDeterminedArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set Int))) :*: (S1 ('MetaSel ('Just "typeClassCoveringSets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (Set Int))) :*: S1 ('MetaSel ('Just "typeClassIsEmpty") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))))

data TypeKind #

The kinds of a type

Constructors

DataType DataDeclType [(Text, Maybe SourceType, Role)] [(ProperName 'ConstructorName, [SourceType])]

Data type

TypeSynonym

Type synonym

ExternData [Role]

Foreign data

LocalTypeVariable

A local type variable

ScopedTypeVar

A scoped type variable

Instances

Instances details
Generic TypeKind # 
Instance details

Defined in Language.PureScript.Environment

Associated Types

type Rep TypeKind :: Type -> Type #

Methods

from :: TypeKind -> Rep TypeKind x #

to :: Rep TypeKind x -> TypeKind #

Show TypeKind # 
Instance details

Defined in Language.PureScript.Environment

Methods

showsPrec :: Int -> TypeKind -> ShowS #

show :: TypeKind -> String #

showList :: [TypeKind] -> ShowS #

NFData TypeKind # 
Instance details

Defined in Language.PureScript.Environment

Methods

rnf :: TypeKind -> () #

Eq TypeKind # 
Instance details

Defined in Language.PureScript.Environment

Serialise TypeKind # 
Instance details

Defined in Language.PureScript.Environment

type Rep TypeKind # 
Instance details

Defined in Language.PureScript.Environment

type Rep TypeKind = D1 ('MetaData "TypeKind" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "DataType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataDeclType) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType, Role)]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ProperName 'ConstructorName, [SourceType])]))) :+: C1 ('MetaCons "TypeSynonym" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExternData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: (C1 ('MetaCons "LocalTypeVariable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ScopedTypeVar" 'PrefixI 'False) (U1 :: Type -> Type))))

data Imports #

The imported declarations for a module, including the module's own members.

Constructors

Imports 

Fields

Instances

Instances details
Show Imports # 
Instance details

Defined in Language.PureScript.Sugar.Names.Env

Methods

showsPrec :: Int -> Imports -> ShowS #

show :: Imports -> String #

showList :: [Imports] -> ShowS #

type UsedImports = Map ModuleName [Qualified Name] #

Map of module name to list of imported names from that module which have been used.

data ExportSource #

Instances

Instances details
FromJSON ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

ToJSON ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Generic ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Associated Types

type Rep ExportSource :: Type -> Type #

Show ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> ExportSource -> ShowS #

show :: ExportSource -> String #

showList :: [ExportSource] -> ShowS #

NFData ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

rnf :: ExportSource -> () #

Eq ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Ord ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

Serialise ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep ExportSource # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep ExportSource = D1 ('MetaData "ExportSource" "Language.PureScript.AST.Declarations" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExportSource" 'PrefixI 'True) (S1 ('MetaSel ('Just "exportSourceImportedFrom") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModuleName)) :*: S1 ('MetaSel ('Just "exportSourceDefinedIn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)))

data Exports #

The exported declarations from a module.

Constructors

Exports 

Fields

Instances

Instances details
Show Exports # 
Instance details

Defined in Language.PureScript.Sugar.Names.Env

Methods

showsPrec :: Int -> Exports -> ShowS #

show :: Exports -> String #

showList :: [Exports] -> ShowS #

data ImportRecord a #

The details for an import: the name of the thing that is being imported (x if importing from A), the module that the thing was originally defined in (for re-export resolution), and the import provenance (see below).

Instances

Instances details
Show a => Show (ImportRecord a) # 
Instance details

Defined in Language.PureScript.Sugar.Names.Env

Methods

showsPrec :: Int -> ImportRecord a -> ShowS #

show :: ImportRecord a -> String #

showList :: [ImportRecord a] -> ShowS #

Eq a => Eq (ImportRecord a) # 
Instance details

Defined in Language.PureScript.Sugar.Names.Env

Ord a => Ord (ImportRecord a) # 
Instance details

Defined in Language.PureScript.Sugar.Names.Env

data WildcardData #

Describes how a TypeWildcard should be presented to the user during type checking: holes (?foo) are always emitted as errors, whereas unnamed wildcards (_) default to warnings, but are ignored entirely if they are contained by a binding with a complete (wildcard-free) type signature.

Instances

Instances details
FromJSON WildcardData # 
Instance details

Defined in Language.PureScript.Types

ToJSON WildcardData # 
Instance details

Defined in Language.PureScript.Types

Generic WildcardData # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep WildcardData :: Type -> Type #

Show WildcardData # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> WildcardData -> ShowS #

show :: WildcardData -> String #

showList :: [WildcardData] -> ShowS #

NFData WildcardData # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: WildcardData -> () #

Eq WildcardData # 
Instance details

Defined in Language.PureScript.Types

Ord WildcardData # 
Instance details

Defined in Language.PureScript.Types

Serialise WildcardData # 
Instance details

Defined in Language.PureScript.Types

type Rep WildcardData # 
Instance details

Defined in Language.PureScript.Types

type Rep WildcardData = D1 ('MetaData "WildcardData" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "HoleWildcard" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "UnnamedWildcard" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IgnoredWildcard" 'PrefixI 'False) (U1 :: Type -> Type)))

data DependencyDepth #

Constructors

Direct 
Transitive 

data CheckState #

State required for type checking

Constructors

CheckState 

Fields

data MakeActions m #

Actions that require implementations when running in "make" mode.

This type exists to make two things abstract:

  • The particular backend being used (JavaScript, C++11, etc.)
  • The details of how files are read/written etc.

Constructors

MakeActions 

Fields

  • getInputTimestampsAndHashes :: ModuleName -> m (Either RebuildPolicy (Map FilePath (UTCTime, m ContentHash)))

    Get the timestamps and content hashes for the input files for a module. The content hash is returned as a monadic action so that the file does not have to be read if it's not necessary.

  • getOutputTimestamp :: ModuleName -> m (Maybe UTCTime)

    Get the time this module was last compiled, provided that all of the requested codegen targets were also produced then. The defaultMakeActions implementation uses the modification time of the externs file, because the externs file is written first and we always write one. If there is no externs file, or if any of the requested codegen targets were not produced the last time this module was compiled, this function must return Nothing; this indicates that the module will have to be recompiled.

  • readExterns :: ModuleName -> m (FilePath, Maybe ExternsFile)

    Read the externs file for a module as a string and also return the actual path for the file.

  • codegen :: Module Ann -> Module -> ExternsFile -> SupplyT m ()

    Run the code generator for the module and write any required output files.

  • ffiCodegen :: Module Ann -> m ()

    Check ffi and print it in the output directory.

  • progress :: ProgressMessage -> m ()

    Respond to a progress update.

  • readCacheDb :: m CacheDb

    Read the cache database (which contains timestamps and hashes for input files) from some external source, e.g. a file on disk.

  • writeCacheDb :: CacheDb -> m ()

    Write the given cache database to some external source (e.g. a file on disk).

  • writePackageJson :: m ()

    Write to the output directory the package.json file allowing Node.js to load .js files as ES modules.

  • outputPrimDocs :: m ()

    If generating docs, output the documentation for the Prim modules

data RebuildPolicy #

Determines when to rebuild a module

Constructors

RebuildNever

Never rebuild this module

RebuildAlways

Always rebuild this module

type ModuleGraph = [(ModuleName, [ModuleName])] #

A list of modules with their transitive dependencies

data ModuleSignature #

A module signature for sorting dependencies.

newtype AssocList k t #

Constructors

AssocList 

Fields

Instances

Instances details
Foldable (AssocList k) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fold :: Monoid m => AssocList k m -> m #

foldMap :: Monoid m => (a -> m) -> AssocList k a -> m #

foldMap' :: Monoid m => (a -> m) -> AssocList k a -> m

foldr :: (a -> b -> b) -> b -> AssocList k a -> b #

foldr' :: (a -> b -> b) -> b -> AssocList k a -> b #

foldl :: (b -> a -> b) -> b -> AssocList k a -> b #

foldl' :: (b -> a -> b) -> b -> AssocList k a -> b #

foldr1 :: (a -> a -> a) -> AssocList k a -> a #

foldl1 :: (a -> a -> a) -> AssocList k a -> a #

toList :: AssocList k a -> [a] #

null :: AssocList k a -> Bool #

length :: AssocList k a -> Int #

elem :: Eq a => a -> AssocList k a -> Bool #

maximum :: Ord a => AssocList k a -> a #

minimum :: Ord a => AssocList k a -> a #

sum :: Num a => AssocList k a -> a #

product :: Num a => AssocList k a -> a #

Traversable (AssocList k) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

traverse :: Applicative f => (a -> f b) -> AssocList k a -> f (AssocList k b) #

sequenceA :: Applicative f => AssocList k (f a) -> f (AssocList k a)

mapM :: Monad m => (a -> m b) -> AssocList k a -> m (AssocList k b)

sequence :: Monad m => AssocList k (m a) -> m (AssocList k a)

Functor (AssocList k) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fmap :: (a -> b) -> AssocList k a -> AssocList k b #

(<$) :: a -> AssocList k b -> AssocList k a #

(Show k, Show t) => Show (AssocList k t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> AssocList k t -> ShowS #

show :: AssocList k t -> String #

showList :: [AssocList k t] -> ShowS #

(Eq k, Eq t) => Eq (AssocList k t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

(==) :: AssocList k t -> AssocList k t -> Bool #

(/=) :: AssocList k t -> AssocList k t -> Bool #

(Ord k, Ord t) => Ord (AssocList k t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

compare :: AssocList k t -> AssocList k t -> Ordering #

(<) :: AssocList k t -> AssocList k t -> Bool #

(<=) :: AssocList k t -> AssocList k t -> Bool #

(>) :: AssocList k t -> AssocList k t -> Bool #

(>=) :: AssocList k t -> AssocList k t -> Bool #

max :: AssocList k t -> AssocList k t -> AssocList k t #

min :: AssocList k t -> AssocList k t -> AssocList k t #

data PathNode t #

Constructors

Leaf t 
Branch (PathTree t) 

Instances

Instances details
Foldable PathNode # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fold :: Monoid m => PathNode m -> m #

foldMap :: Monoid m => (a -> m) -> PathNode a -> m #

foldMap' :: Monoid m => (a -> m) -> PathNode a -> m

foldr :: (a -> b -> b) -> b -> PathNode a -> b #

foldr' :: (a -> b -> b) -> b -> PathNode a -> b #

foldl :: (b -> a -> b) -> b -> PathNode a -> b #

foldl' :: (b -> a -> b) -> b -> PathNode a -> b #

foldr1 :: (a -> a -> a) -> PathNode a -> a #

foldl1 :: (a -> a -> a) -> PathNode a -> a #

toList :: PathNode a -> [a] #

null :: PathNode a -> Bool #

length :: PathNode a -> Int #

elem :: Eq a => a -> PathNode a -> Bool #

maximum :: Ord a => PathNode a -> a #

minimum :: Ord a => PathNode a -> a #

sum :: Num a => PathNode a -> a #

product :: Num a => PathNode a -> a #

Traversable PathNode # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

traverse :: Applicative f => (a -> f b) -> PathNode a -> f (PathNode b) #

sequenceA :: Applicative f => PathNode (f a) -> f (PathNode a)

mapM :: Monad m => (a -> m b) -> PathNode a -> m (PathNode b)

sequence :: Monad m => PathNode (m a) -> m (PathNode a)

Functor PathNode # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fmap :: (a -> b) -> PathNode a -> PathNode b #

(<$) :: a -> PathNode b -> PathNode a #

Show t => Show (PathNode t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> PathNode t -> ShowS #

show :: PathNode t -> String #

showList :: [PathNode t] -> ShowS #

Eq t => Eq (PathNode t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

(==) :: PathNode t -> PathNode t -> Bool #

(/=) :: PathNode t -> PathNode t -> Bool #

Ord t => Ord (PathNode t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

compare :: PathNode t -> PathNode t -> Ordering #

(<) :: PathNode t -> PathNode t -> Bool #

(<=) :: PathNode t -> PathNode t -> Bool #

(>) :: PathNode t -> PathNode t -> Bool #

(>=) :: PathNode t -> PathNode t -> Bool #

max :: PathNode t -> PathNode t -> PathNode t #

min :: PathNode t -> PathNode t -> PathNode t #

newtype PathTree t #

Constructors

PathTree (AssocList PSString (PathNode t)) 

Instances

Instances details
Foldable PathTree # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fold :: Monoid m => PathTree m -> m #

foldMap :: Monoid m => (a -> m) -> PathTree a -> m #

foldMap' :: Monoid m => (a -> m) -> PathTree a -> m

foldr :: (a -> b -> b) -> b -> PathTree a -> b #

foldr' :: (a -> b -> b) -> b -> PathTree a -> b #

foldl :: (b -> a -> b) -> b -> PathTree a -> b #

foldl' :: (b -> a -> b) -> b -> PathTree a -> b #

foldr1 :: (a -> a -> a) -> PathTree a -> a #

foldl1 :: (a -> a -> a) -> PathTree a -> a #

toList :: PathTree a -> [a] #

null :: PathTree a -> Bool #

length :: PathTree a -> Int #

elem :: Eq a => a -> PathTree a -> Bool #

maximum :: Ord a => PathTree a -> a #

minimum :: Ord a => PathTree a -> a #

sum :: Num a => PathTree a -> a #

product :: Num a => PathTree a -> a #

Traversable PathTree # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

traverse :: Applicative f => (a -> f b) -> PathTree a -> f (PathTree b) #

sequenceA :: Applicative f => PathTree (f a) -> f (PathTree a)

mapM :: Monad m => (a -> m b) -> PathTree a -> m (PathTree b)

sequence :: Monad m => PathTree (m a) -> m (PathTree a)

Functor PathTree # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

fmap :: (a -> b) -> PathTree a -> PathTree b #

(<$) :: a -> PathTree b -> PathTree a #

Show t => Show (PathTree t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> PathTree t -> ShowS #

show :: PathTree t -> String #

showList :: [PathTree t] -> ShowS #

Eq t => Eq (PathTree t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

(==) :: PathTree t -> PathTree t -> Bool #

(/=) :: PathTree t -> PathTree t -> Bool #

Ord t => Ord (PathTree t) # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

compare :: PathTree t -> PathTree t -> Ordering #

(<) :: PathTree t -> PathTree t -> Bool #

(<=) :: PathTree t -> PathTree t -> Bool #

(>) :: PathTree t -> PathTree t -> Bool #

(>=) :: PathTree t -> PathTree t -> Bool #

max :: PathTree t -> PathTree t -> PathTree t #

min :: PathTree t -> PathTree t -> PathTree t #

data WhereProvenance #

Metadata that tells where a let binding originated

Constructors

FromWhere

The let binding was originally a where clause

FromLet

The let binding was always a let binding

Instances

Instances details
Show WhereProvenance # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> WhereProvenance -> ShowS #

show :: WhereProvenance -> String #

showList :: [WhereProvenance] -> ShowS #

data ImportProvenance #

Used to track how an import was introduced into scope. This allows us to handle the one-open-import special case that allows a name conflict to become a warning rather than being an unresolvable situation.

data KindSignatureFor #

What sort of declaration the kind signature applies to.

Instances

Instances details
Generic KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

Associated Types

type Rep KindSignatureFor :: Type -> Type #

Show KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> KindSignatureFor -> ShowS #

show :: KindSignatureFor -> String #

showList :: [KindSignatureFor] -> ShowS #

NFData KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

rnf :: KindSignatureFor -> () #

Eq KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

Ord KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep KindSignatureFor # 
Instance details

Defined in Language.PureScript.AST.Declarations

type Rep KindSignatureFor = D1 ('MetaData "KindSignatureFor" "Language.PureScript.AST.Declarations" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "DataSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NewtypeSig" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeSynonymSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ClassSig" 'PrefixI 'False) (U1 :: Type -> Type)))

data RoleDeclarationData #

A role declaration assigns a list of roles to a type constructor's parameters, e.g.:

type role T representational phantom

In this example, T is the identifier and [representational, phantom] is the list of roles (T presumably having two parameters).

newtype UnkLevel #

Constructors

UnkLevel (NonEmpty Unknown) 

Instances

Instances details
Show UnkLevel # 
Instance details

Defined in Language.PureScript.TypeChecker.Monad

Methods

showsPrec :: Int -> UnkLevel -> ShowS #

show :: UnkLevel -> String #

showList :: [UnkLevel] -> ShowS #

Eq UnkLevel # 
Instance details

Defined in Language.PureScript.TypeChecker.Monad

Ord UnkLevel # 
Instance details

Defined in Language.PureScript.TypeChecker.Monad

newtype SkolemScope #

An identifier for the scope of a skolem variable

Constructors

SkolemScope 

Fields

Instances

Instances details
FromJSON SkolemScope # 
Instance details

Defined in Language.PureScript.Types

ToJSON SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Generic SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Associated Types

type Rep SkolemScope :: Type -> Type #

Show SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Methods

showsPrec :: Int -> SkolemScope -> ShowS #

show :: SkolemScope -> String #

showList :: [SkolemScope] -> ShowS #

NFData SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Methods

rnf :: SkolemScope -> () #

Eq SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Ord SkolemScope # 
Instance details

Defined in Language.PureScript.Types

Serialise SkolemScope # 
Instance details

Defined in Language.PureScript.Types

type Rep SkolemScope # 
Instance details

Defined in Language.PureScript.Types

type Rep SkolemScope = D1 ('MetaData "SkolemScope" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'True) (C1 ('MetaCons "SkolemScope" 'PrefixI 'True) (S1 ('MetaSel ('Just "runSkolemScope") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

type SynonymMap = Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType) #

Type synonym information (arguments with kinds, aliased type), indexed by name

data TypeSearch #

Holds the data necessary to do type directed search for typed holes

Constructors

TSBefore Environment

An Environment captured for later consumption by type directed search

TSAfter

Results of applying type directed search to the previously captured Environment

Fields

Instances

Instances details
Show TypeSearch # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> TypeSearch -> ShowS #

show :: TypeSearch -> String #

showList :: [TypeSearch] -> ShowS #

data HintCategory #

Categories of hints

Instances

Instances details
Show HintCategory # 
Instance details

Defined in Language.PureScript.AST.Declarations

Methods

showsPrec :: Int -> HintCategory -> ShowS #

show :: HintCategory -> String #

showList :: [HintCategory] -> ShowS #

Eq HintCategory # 
Instance details

Defined in Language.PureScript.AST.Declarations

newtype ErrorSuggestion #

Constructors

ErrorSuggestion Text 

data PPEOptions #

Constructors

PPEOptions 

Fields

pattern REmptyKinded :: forall a. a -> Maybe (Type a) -> Type a #

function :: SourceType -> SourceType -> SourceType #

Smart constructor for function types

internalError :: HasCallStack => String -> a #

Exit with an error message and a crash report link.

renderBox :: Box -> String #

line :: Text -> Box #

errorMessage :: SimpleErrorMessage -> MultipleErrors #

Create an error set from a single simple error message

copyFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> FilePath -> m () #

Copy a file in the Make monad, capturing any errors using the MonadError instance.

nonEmpty :: MultipleErrors -> Bool #

Check whether a collection of errors is empty or not.

exportedDeclarations :: Module -> [Declaration] #

Return a list of all declarations which are exported from a module. This function descends into data declarations to filter out unexported data constructors, and also filters out type instance declarations if they refer to classes or types which are not themselves exported.

Note that this function assumes that the module has already had its imports desugared using desugarImports. It will produce incorrect results if this is not the case - for example, type class instances will be incorrectly removed in some cases.

The returned declarations are in the same order as they appear in the export list, unless there is no export list, in which case they appear in the same order as they do in the source file.

Kind signatures declarations are also exported if their associated declaration is exported.

isExported :: Maybe [DeclarationRef] -> Declaration -> Bool #

Test if a declaration is exported, given a module's export list. Note that this function does not account for type instance declarations of non-exported types, or non-exported data constructors. Therefore, you should prefer exportedDeclarations to this function, where possible.

flattenDecls :: [Declaration] -> [Declaration] #

Recursively flatten data binding groups in the list of declarations

everythingOnTypes :: (r -> r -> r) -> (Type a -> r) -> Type a -> r #

coerceProperName :: ProperName a -> ProperName b #

Coerces a ProperName from one ProperNameType to another. This should be used with care, and is primarily used to convert ClassNames into TypeNames after classes have been desugared.

disqualify :: Qualified a -> a #

Remove the module name from a qualified name

isQualified :: Qualified a -> Bool #

Checks whether a qualified value is actually qualified with a module reference

isQualifiedWith :: ModuleName -> Qualified a -> Bool #

Checks whether a qualified value is qualified with a particular module

binderNames :: Binder -> [Ident] #

Collect all names introduced in binders in an expression

traverseTypeInstanceBody :: Applicative f => ([Declaration] -> f [Declaration]) -> TypeInstanceBody -> f TypeInstanceBody #

A traversal for TypeInstanceBody

mapConstraintArgs :: ([Type a] -> [Type a]) -> Constraint a -> Constraint a #

rethrow :: MonadError e m => (e -> e) -> m a -> m a #

Rethrow an error with a more detailed error message in the case of failure

errorMessage' :: SourceSpan -> SimpleErrorMessage -> MultipleErrors #

Create an error set from a single simple error message and source annotation

rethrowWithPosition :: MonadError MultipleErrors m => SourceSpan -> m a -> m a #

Rethrow an error with source position information

addHint :: ErrorMessageHint -> MultipleErrors -> MultipleErrors #

Add a hint to an error message

showQualified :: (a -> Text) -> Qualified a -> Text #

everythingOnValues :: forall r. (r -> r -> r) -> (Declaration -> r) -> (Expr -> r) -> (Binder -> r) -> (CaseAlternative -> r) -> (DoNotationElement -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #

lookupConstructor :: Environment -> Qualified (ProperName 'ConstructorName) -> (DataDeclType, ProperName 'TypeName, SourceType, [Ident]) #

Finds information about data constructors from the current environment.

lookupValue :: Environment -> Qualified Ident -> Maybe (SourceType, NameKind, NameVisibility) #

Finds information about values from the current environment.

evalSupplyT :: Functor m => Integer -> SupplyT m a -> m a #

prettyPrintString :: PSString -> Text #

Pretty print a PSString, using PureScript escape sequences.

eqType :: Type a -> Type b -> Bool #

prettyPrintSuggestedType :: Type a -> String #

Generate a pretty-printed string representing a suggested Type

prettyPrintValue :: Int -> Expr -> Box #

Pretty-print an expression

typeAsBox :: Int -> Type a -> Box #

everywhereOnTypesTopDownM :: Monad m => (Type a -> m (Type a)) -> Type a -> m (Type a) #

getAnnForType :: Type a -> a #

isMonoType :: Type a -> Bool #

Check whether a type is a monotype

overConstraintArgs :: Functor f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a) #

rowFromList :: ([RowListItem a], Type a) -> Type a #

Convert a list of labels and types to a row

rowToList :: Type a -> ([RowListItem a], Type a) #

Convert a row to a list of pairs of labels and types

externsIsCurrentVersion :: ExternsFile -> Bool #

Check whether the version in an externs file matches the currently running version.

moduleToExternsFile :: Module -> Environment -> Map Ident Ident -> ExternsFile #

Generate an externs file for all declarations in a module.

The `Map Ident Ident` argument should contain any top-level GenIdents that were rewritten to Idents when the module was compiled; this rewrite only happens in the CoreFn, not the original module AST, so it needs to be applied to the exported names here also. (The appropriate map is returned by renameInModule.)

applyExternsFileToEnvironment :: ExternsFile -> Environment -> Environment #

Convert an externs file back into a module

makeTypeClassData :: [(Text, Maybe SourceType)] -> [(Ident, SourceType)] -> [SourceConstraint] -> [FunctionalDependency] -> Bool -> TypeClassData #

A constructor for TypeClassData that computes which type class arguments are fully determined and argument covering sets. Fully determined means that this argument cannot be used when selecting a type class instance. A covering set is a minimal collection of arguments that can be used to find an instance and therefore determine all other type arguments.

An example of the difference between determined and fully determined would be with the class: ```class C a b c | a -> b, b -> a, b -> c``` In this case, a must differ when b differs, and vice versa - each is determined by the other. Both a and b can be used in selecting a type class instance. However, c cannot - it is fully determined by a and b.

Define a graph of type class arguments with edges being fundep determiners to determined. Each argument also has a self looping edge. An argument is fully determined if doesn't appear at the start of a path of strongly connected components. An argument is not fully determined otherwise.

The way we compute this is by saying: an argument X is fully determined if there are arguments that determine X that X does not determine. This is the same thing: everything X determines includes everything in its SCC, and everything determining X is either before it in an SCC path, or in the same SCC.

srcInstanceType :: SourceSpan -> [(Text, SourceType)] -> Qualified (ProperName 'ClassName) -> [SourceType] -> SourceType #

Construct the type of an instance declaration from its parts. Used in error messages describing unnamed instances.

graph :: [FilePath] -> IO (Either MultipleErrors Value, MultipleErrors) #

Given a set of filepaths, try to build the dependency graph and return that as its JSON representation (or a bunch of errors, if any)

ffiCodegen' :: Map ModuleName FilePath -> Set CodegenTarget -> Maybe (ModuleName -> String -> FilePath) -> Module Ann -> Make () #

FFI check and codegen action. If path maker is supplied copies foreign module to the output.

cacheDbFile :: FilePath -> FilePath #

Given the output directory, determines the location for the CacheDb file

make :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [PartialResult Module] -> m [ExternsFile] #

Compiles in "make" mode, compiling each module separately to a .js file and an externs.cbor file.

If timestamps or hashes have not changed, existing externs files can be used to provide upstream modules' types without having to typecheck those modules again.

runMake :: Options -> Make a -> IO (Either MultipleErrors a, MultipleErrors) #

Execute a Make monad, returning either errors, or the result of the compile plus any warnings.

lint :: forall m. MonadWriter MultipleErrors m => Module -> m () #

Lint the PureScript AST. | | Right now, this pass performs a shadowing check and a check for unused bindings.

everythingWithContextOnTypes :: s -> r -> (r -> r -> r) -> (s -> Type a -> (s, r)) -> Type a -> r #

checkExhaustiveExpr :: forall m. MonadWriter MultipleErrors m => SourceSpan -> Environment -> ModuleName -> Expr -> m Expr #

Exhaustivity checking

everywhereOnValuesM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder) #

lintImports :: forall m. MonadWriter MultipleErrors m => Module -> Env -> UsedImports -> m () #

Find and warn on:

  • Unused import statements (qualified or unqualified)
  • Unused references in an explicit import list
  • Implicit imports of modules
  • Implicit imports into a virtual module (unless the virtual module only has members from one module imported)
  • Imports using hiding (this is another form of implicit importing)

everywhereWithContextOnValues :: forall s. s -> (s -> Declaration -> (s, Declaration)) -> (s -> Expr -> (s, Expr)) -> (s -> Binder -> (s, Binder)) -> (s -> CaseAlternative -> (s, CaseAlternative)) -> (s -> DoNotationElement -> (s, DoNotationElement)) -> (s -> Guard -> (s, Guard)) -> (Declaration -> Declaration, Expr -> Expr, Binder -> Binder, CaseAlternative -> CaseAlternative, DoNotationElement -> DoNotationElement, Guard -> Guard) #

everywhereOnTypes :: (Type a -> Type a) -> Type a -> Type a #

rebuildModule :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [ExternsFile] -> Module -> m ExternsFile #

Rebuild a single module.

This function is used for fast-rebuild workflows (PSCi and psc-ide are examples).

inferForeignModules :: forall m. MonadIO m => Map ModuleName (Either RebuildPolicy FilePath) -> m (Map ModuleName FilePath) #

Infer the module name for a module by looking for the same filename with a .js extension.

runSupply :: Integer -> Supply a -> (a, Integer) #

runSupplyT :: Integer -> SupplyT m a -> m (a, Integer) #

getModuleName :: Module -> ModuleName #

Return a module's name.

getModuleSourceSpan :: Module -> SourceSpan #

Return a module's source span.

importPrim :: Module -> Module #

Adds import declarations to a module for an implicit Prim import and Prim | qualified as Prim, as necessary.

initEnvironment :: Environment #

The initial environment with no values and only the default javascript types defined

defaultPPEOptions :: PPEOptions #

Default options for PPEOptions

errorMessage'' :: NonEmpty SourceSpan -> SimpleErrorMessage -> MultipleErrors #

Create an error set from a single simple error message and source annotations

prettyPrintMultipleErrors :: PPEOptions -> MultipleErrors -> String #

Pretty print multiple errors

sortModules :: forall m a. MonadError MultipleErrors m => DependencyDepth -> (a -> ModuleSignature) -> [a] -> m ([a], ModuleGraph) #

Sort a collection of modules based on module dependencies.

Reports an error if the module graph contains a cycle.

renameInModule :: Module Ann -> (Map Ident Ident, Module Ann) #

Renames within each declaration in a module. Returns the map of renamed identifiers in the top-level scope, so that they can be renamed in the externs files as well.

collapseBindingGroups :: [Declaration] -> [Declaration] #

Collapse all binding groups to individual declarations

desugar :: MonadSupply m => MonadError MultipleErrors m => MonadWriter MultipleErrors m => MonadState (Env, UsedImports) m => [ExternsFile] -> Module -> m Module #

The desugaring pipeline proceeds as follows:

  • Remove signed literals in favour of negate applications
  • Desugar object literals with wildcards into lambdas
  • Desugar operator sections
  • Desugar do-notation
  • Desugar ado-notation
  • Desugar top-level case declarations into explicit case expressions
  • Desugar type declarations into value declarations with explicit type annotations
  • Qualify any unqualified names and types
  • Rebracket user-defined binary operators
  • Introduce newtypes for type class dictionaries and value declarations for instances
  • Group mutually recursive value and data declarations into binding groups.

externsEnv :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Env -> ExternsFile -> m Env #

Create an environment from a collection of externs files

primEnv :: Env #

Environment which only contains the Prim modules.

emptyCheckState :: Environment -> CheckState #

Create an empty CheckState

typeCheckModule :: forall m. (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Map ModuleName Exports -> Module -> m Module #

Type check an entire module and ensure all types and classes defined within the module that are required by exported members are also exported.

renderProgressMessage :: Text -> ProgressMessage -> Text #

Render a progress message

buildMakeActions #

Arguments

:: FilePath

the output directory

-> Map ModuleName (Either RebuildPolicy FilePath)

a map between module names and paths to the file containing the PureScript module

-> Map ModuleName FilePath

a map between module name and the file containing the foreign javascript for the module

-> Bool

Generate a prefix comment?

-> MakeActions Make 

A set of make actions that read and write modules from the given directory.

checkForeignDecls :: Module ann -> FilePath -> Make (Either MultipleErrors (ForeignModuleType, Set Ident)) #

Check that the declarations in a given PureScript module match with those in its corresponding foreign module.

readCacheDb' #

Arguments

:: (MonadIO m, MonadError MultipleErrors m) 
=> FilePath

The path to the output directory

-> m CacheDb 

writeCacheDb' #

Arguments

:: (MonadIO m, MonadError MultipleErrors m) 
=> FilePath

The path to the output directory

-> CacheDb

The CacheDb to be written

-> m () 

getTimestamp :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m UTCTime #

Get a file's modification time in the Make monad, capturing any errors using the MonadError instance.

getTimestampMaybe :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe UTCTime) #

Get a file's modification time in the Make monad, returning Nothing if the file does not exist.

makeIO :: (MonadIO m, MonadError MultipleErrors m) => Text -> IO a -> m a #

Run an IO action in the Make monad. The String argument should describe what we were trying to do; it is used for rendering errors in the case that an IOException is thrown.

readExternsFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe ExternsFile) #

Read an externs file, returning Nothing if the file does not exist, could not be parsed, or was generated by a different version of the compiler.

readJSONFile :: (MonadIO m, MonadError MultipleErrors m) => FromJSON a => FilePath -> m (Maybe a) #

Read a JSON file in the Make monad, returning Nothing if the file does not exist or could not be parsed. Errors are captured using the MonadError instance.

readTextFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m Text #

Read a text file strictly in the Make monad, capturing any errors using the MonadError instance.

writeJSONFile :: (MonadIO m, MonadError MultipleErrors m) => ToJSON a => FilePath -> a -> m () #

Write a JSON file in the Make monad, capturing any errors using the MonadError instance.

writeTextFile :: FilePath -> ByteString -> Make () #

Write a text file in the Make monad, capturing any errors using the MonadError instance.

readCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> m (Maybe a) #

Read a Cbor encoded file in the Make monad, returning Nothing if the file does not exist or could not be parsed. Errors are captured using the MonadError instance.

singleError :: ErrorMessage -> MultipleErrors #

Create an error set from a single error message

parU :: forall m a b. MonadError MultipleErrors m => [a] -> (a -> m b) -> m [b] #

Collect errors in in parallel

prettyPrintType :: Int -> Type a -> String #

Generate a pretty-printed string representing a Type

prettyPrintTypeWithUnicode :: Int -> Type a -> String #

Generate a pretty-printed string representing a Type using unicode symbols where applicable

prettyPrintTypeAtom :: Int -> Type a -> String #

Generate a pretty-printed string representing a Type, as it should appear inside parentheses

tyFunction :: SourceType #

Type constructor for functions

tyRecord :: SourceType #

Type constructor for records

rowToSortedList :: Type a -> ([RowListItem a], Type a) #

Convert a row to a list of pairs of labels and types, sorted by the labels.

prettyPrintBinder :: Binder -> Text #

Generate a pretty-printed string representing a Binder

desugarAdoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #

Replace all AdoNotationBind and AdoNotationValue constructors with applications of the pure and apply functions in scope, and all AdoNotationLet constructors with let expressions.

createBindingGroupsModule :: MonadError MultipleErrors m => Module -> m Module #

Replace all sets of mutually-recursive declarations in a module with binding groups

desugarCases :: forall m. (MonadSupply m, MonadError MultipleErrors m) => [Declaration] -> m [Declaration] #

Replace all top-level binders with case expressions.

desugarCasesModule :: (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #

Replace all top-level binders in a module with case expressions.

guardWith :: MonadError e m => e -> Bool -> m () #

Make an assertion, failing with an error message

desugarDoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #

Replace all DoNotationBind and DoNotationValue constructors with applications of the bind function in scope, and all DoNotationLet constructors with let expressions.

desugarLetPatternModule :: Module -> Module #

Replace every BoundValueDeclaration in Let expressions with Case expressions.

desugarImports :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m, MonadState (Env, UsedImports) m) => Module -> m Module #

Replaces all local names with qualified names.

warnAndRethrow :: (MonadError e m, MonadWriter e m) => (e -> e) -> m a -> m a #

everywhereOnTypesM :: Monad m => (Type a -> m (Type a)) -> Type a -> m (Type a) #

warnWithPosition :: MonadWriter MultipleErrors m => SourceSpan -> m a -> m a #

disqualifyFor :: Maybe ModuleName -> Qualified a -> Maybe a #

Remove the qualification from a value when it is qualified with a particular module name.

isUnqualified :: Qualified a -> Bool #

Checks whether a qualified value is not actually qualified with a module reference

desugarSignedLiterals :: Module -> Module #

Removes unary negation operators and replaces them with calls to negate.

rebracket :: forall m. MonadError MultipleErrors m => MonadSupply m => [ExternsFile] -> Module -> m Module #

Remove explicit parentheses and reorder binary operator applications.

This pass requires name desugaring and export elaboration to have run first.

rebracketFiltered :: forall m. MonadError MultipleErrors m => MonadSupply m => RebracketCaller -> (Declaration -> Bool) -> [ExternsFile] -> Module -> m Module #

A version of rebracket which allows you to choose which declarations should be affected. This is used in docs generation, where we want to desugar type operators in instance declarations to ensure that instances are paired up with their types correctly, but we don't want to desugar type operators in value declarations.

checkFixityExports :: forall m. MonadError MultipleErrors m => Module -> m Module #

Checks all the fixity exports within a module to ensure that members aliased by the operators are also exported from the module.

This pass requires name desugaring and export elaboration to have run first.

desugarTypeClasses :: (MonadSupply m, MonadError MultipleErrors m) => [ExternsFile] -> Module -> m Module #

Add type synonym declarations for type class dictionary types, and value declarations for type class instance dictionary expressions.

primClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData #

The primitive class map. This just contains the Partial class. Partial is used as a kind of magic constraint for partial functions.

qualify :: ModuleName -> Qualified a -> (ModuleName, a) #

Provide a default module name, if a name is unqualified

deriveInstances :: forall m. (MonadError MultipleErrors m, MonadSupply m) => Module -> m Module #

Elaborates deriving instance declarations by code generation.

replaceAllTypeVars :: [(Text, Type a)] -> Type a -> Type a #

Replace named type variables with types

checkNewtype :: forall m. MonadError MultipleErrors m => ProperName 'TypeName -> [DataConstructorDeclaration] -> m (DataConstructorDeclaration, (Ident, SourceType)) #

Check that a newtype has just one data constructor with just one field, or throw an error. If the newtype is valid, this function returns the single data constructor declaration and the single field, as a proof that the newtype was indeed a valid newtype.

desugarTypeDeclarationsModule :: forall m. MonadError MultipleErrors m => Module -> m Module #

Replace all top level type declarations in a module with type annotations

everywhereOnValuesTopDownM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder) #

nominalRolesForKind :: Type a -> [Role] #

Given the kind of a type, generate a list Nominal roles. This is used for opaque foreign types as well as type classes.

mkQualified :: a -> ModuleName -> Qualified a #

Makes a qualified value from a name and module name.

containsForAll :: Type a -> Bool #

Check if a type contains forall

freeTypeVariables :: Type a -> [Text] #

Collect all free type variables appearing in a type

unapplyTypes :: Type a -> (Type a, [Type a], [Type a]) #

kindType :: SourceType #

Kind of ground types

getEnv :: MonadState CheckState m => m Environment #

Get the current Environment

getTypeClassDictionaries :: MonadState CheckState m => m (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))) #

Get the currently available map of type class dictionaries

replaceAllTypeSynonyms :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => SourceType -> m SourceType #

Replace fully applied type synonyms

completeBinderList :: Type a -> Maybe ([(a, (Text, Type a))], Type a) #

Collect a complete set of kind-annotated quantifiers at the front of a type.

usedTypeVariables :: Type a -> [Text] #

Collect all type variables appearing in a type

tyBoolean :: SourceType #

Type constructor for booleans

tyInt :: SourceType #

Type constructor for integers

tyString :: SourceType #

Type constructor for strings

addHints :: [ErrorMessageHint] -> MultipleErrors -> MultipleErrors #

Add hints to an error message

unifyKinds' :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #

Does not attach positions to the error node, instead relies on the | local position context. This is useful when invoking kind unification | outside of kind checker internals.

unapplyKinds :: Type a -> ([Type a], Type a) #

lookupRoles :: Environment -> Qualified (ProperName 'TypeName) -> [Role] #

Lookup the roles for a type in the environment. If the type does not have roles (e.g. is a type synonym or a type variable), then this function returns an empty list.

alignRowsWith :: (Label -> Type a -> Type a -> r) -> Type a -> Type a -> ([r], (([RowListItem a], Type a), ([RowListItem a], Type a))) #

Align two rows of types, splitting them into three parts:

  • Those types which appear in both rows
  • Those which appear only on the left
  • Those which appear only on the right

Note: importantly, we preserve the order of the types with a given label.

containsUnknowns :: Type a -> Bool #

Check if a type contains unknowns in a position that is relevant to constraint solving. (Kinds are not.)

kindOf :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (SourceType, SourceType) #

Infer the kind of a single type

kindOfWithScopedVars :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (([(Text, SourceType)], SourceType), SourceType) #

Infer the kind of a single type, returning the kinds of any scoped type variables

kindOfData :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> DataDeclarationArgs -> m DataDeclarationResult #

kindOfTypeSynonym :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> TypeDeclarationArgs -> m TypeDeclarationResult #

kindOfClass :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> ClassDeclarationArgs -> m ClassDeclarationResult #

kindsOfAll :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> [TypeDeclarationArgs] -> [DataDeclarationArgs] -> [ClassDeclarationArgs] -> m ([TypeDeclarationResult], [DataDeclarationResult], [ClassDeclarationResult]) #

checkInstanceDeclaration :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> InstanceDeclarationArgs -> m InstanceDeclarationResult #

checkTypeKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #

Check the kind of a type, failing if it is not of kind *.

bindLocalTypeVariables :: MonadState CheckState m => ModuleName -> [(ProperName 'TypeName, SourceType)] -> m a -> m a #

Temporarily bind a collection of names to local type variables

debugType :: Type a -> String #

lookupTypeVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => ModuleName -> Qualified (ProperName 'TypeName) -> m SourceType #

Lookup the kind of a type by name in the Environment

checkRoles #

Arguments

:: forall m. MonadError MultipleErrors m 
=> [(Text, Maybe SourceType, Role)]

type parameters for the data type whose roles we are checking

-> [Role]

roles declared for the data type

-> m () 

Compares the inferred roles to the explicitly declared roles and ensures that the explicitly declared roles are not more permissive than the inferred ones.

inferRoles #

Arguments

:: Environment 
-> ModuleName 
-> ProperName 'TypeName

The name of the data type whose roles we are checking

-> [(Text, Maybe SourceType)]

type parameters for the data type whose roles we are checking

-> [DataConstructorDeclaration]

constructors of the data type whose roles we are checking

-> [Role] 

Infers roles for the given data type declaration.

everythingWithContextOnValues :: forall s r. s -> r -> (r -> r -> r) -> (s -> Declaration -> (s, r)) -> (s -> Expr -> (s, r)) -> (s -> Binder -> (s, r)) -> (s -> CaseAlternative -> (s, r)) -> (s -> DoNotationElement -> (s, r)) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #

everywhereWithContextOnValuesM :: forall m s. Monad m => s -> (s -> Declaration -> m (s, Declaration)) -> (s -> Expr -> m (s, Expr)) -> (s -> Binder -> m (s, Binder)) -> (s -> CaseAlternative -> m (s, CaseAlternative)) -> (s -> DoNotationElement -> m (s, DoNotationElement)) -> (s -> Guard -> m (s, Guard)) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder, CaseAlternative -> m CaseAlternative, DoNotationElement -> m DoNotationElement, Guard -> m Guard) #

replaceTypeVars :: Text -> Type a -> Type a -> Type a #

Replace a type variable, taking into account variable shadowing

getHints :: MonadState CheckState m => m [ErrorMessageHint] #

These hints are added at the front, so the most nested hint occurs at the front, but the simplifier assumes the reverse order.

isREmpty :: forall a. Type a -> Bool #

replaceAllTypeSynonymsM :: MonadError MultipleErrors m => SynonymMap -> KindMap -> SourceType -> m SourceType #

Replace fully applied type synonyms by explicitly providing a SynonymMap.

typesOf :: (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => BindingGroupType -> ModuleName -> [((SourceAnn, Ident), Expr)] -> m [((SourceAnn, Ident), (Expr, SourceType))] #

Infer the types of multiple mutually-recursive values, and return elaborated values including type class dictionaries and type annotations.

escalateWarningWhen :: (MonadWriter MultipleErrors m, MonadError MultipleErrors m) => (ErrorMessage -> Bool) -> m a -> m a #

Runs a computation listening for warnings and then escalating any warnings that match the predicate to error status.

onErrorMessages :: (ErrorMessage -> ErrorMessage) -> MultipleErrors -> MultipleErrors #

Lift a function on ErrorMessage to a function on MultipleErrors

getLocalContext :: MonadState CheckState m => m Context #

Get locally-bound names in context, to create an error message.

mkForAll :: [(a, (Text, Maybe (Type a)))] -> Type a -> Type a #

Universally quantify a type

toREmptyKinded :: forall a. Type a -> Maybe (a, Maybe (Type a)) #

overConstraintArgsAll :: Applicative f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a) #

typeToJSON :: forall a. (a -> Value) -> Type a -> Value #

constraintFromJSON :: forall a. Parser a -> (Value -> Parser a) -> Value -> Parser (Constraint a) #

typeFromJSON :: forall a. Parser a -> (Value -> Parser a) -> Value -> Parser (Type a) #

addVisibility :: [(Text, TypeVarVisibility)] -> Type a -> Type a #

Add visible type abstractions to top-level foralls.

quantify :: Type a -> Type a #

Universally quantify over all type variables appearing free in a type

moveQuantifiersToFront :: Type a -> Type a #

Move all universal quantifiers to the front of a type

setAnnForType :: a -> Type a -> Type a #

eqMaybeType :: Maybe (Type a) -> Maybe (Type b) -> Bool #

allPrimTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #

This Map contains all of the prim types from all Prim modules.

allPrimClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData #

This contains all of the type classes from all Prim modules.

tyChar :: SourceType #

Type constructor for strings

tyNumber :: SourceType #

Type constructor for numbers

tyArray :: SourceType #

Type constructor for arrays

primTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #

The primitive types in the external environment with their associated kinds. There are also pseudo Fail, Warn, and Partial types that correspond to the classes with the same names.

getModuleDeclarations :: Module -> [Declaration] #

Return a module's declarations.

addDefaultImport :: Qualified ModuleName -> Module -> Module #

Add an import declaration for a module if it does not already explicitly import it.

Will not import an unqualified module if that module has already been imported qualified. (See #2197)

isValueDecl :: Declaration -> Bool #

Test if a declaration is a value declaration

isDataDecl :: Declaration -> Bool #

Test if a declaration is a data type declaration

isTypeSynonymDecl :: Declaration -> Bool #

Test if a declaration is a type synonym declaration

isImportDecl :: Declaration -> Bool #

Test if a declaration is a module import

isRoleDecl :: Declaration -> Bool #

Test if a declaration is a role declaration

isExternDataDecl :: Declaration -> Bool #

Test if a declaration is a data type foreign import

isFixityDecl :: Declaration -> Bool #

Test if a declaration is a fixity declaration

isExternDecl :: Declaration -> Bool #

Test if a declaration is a foreign import

isTypeClassInstanceDecl :: Declaration -> Bool #

Test if a declaration is a type class instance declaration

isTypeClassDecl :: Declaration -> Bool #

Test if a declaration is a type class declaration

isKindDecl :: Declaration -> Bool #

Test if a declaration is a kind signature declaration.

litM :: Monad m => (a -> m a) -> Literal a -> m (Literal a) #

accumTypes :: Monoid r => (SourceType -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #

overTypes :: (SourceType -> SourceType) -> Expr -> Expr #

Map a function over type annotations appearing inside a value

errorSpan :: ErrorMessage -> Maybe (NonEmpty SourceSpan) #

Get the source span for an error

errorModule :: ErrorMessage -> Maybe ModuleName #

Get the module name for an error

stripModuleAndSpan :: ErrorMessage -> ErrorMessage #

Remove the module name and span hints from an error

errorCode :: ErrorMessage -> Text #

Get the error code for a particular error type

unwrapErrorMessage :: ErrorMessage -> SimpleErrorMessage #

Extract nested error messages from wrapper errors

errorMessage''' :: [SourceSpan] -> SimpleErrorMessage -> MultipleErrors #

Create an error from multiple (possibly empty) source spans, reversed sorted.

ansiColorReset :: String #

defaultCodeColor :: (ColorIntensity, Color) #

Default color intensity and color for code

prettyPrintSingleError :: PPEOptions -> ErrorMessage -> Box #

Pretty print a single error, simplifying if necessary

lineS :: String -> Box #

prettyPrintMultipleErrorsBox :: PPEOptions -> MultipleErrors -> [Box] #

Pretty print errors as a Box

prettyPrintMultipleWarnings :: PPEOptions -> MultipleErrors -> String #

Pretty print multiple warnings

prettyPrintMultipleWarningsBox :: PPEOptions -> MultipleErrors -> [Box] #

Pretty print warnings as a Box

emptySubstitution :: Substitution #

An empty substitution

bindNames :: MonadState CheckState m => Map (Qualified Ident) (SourceType, NameKind, NameVisibility) -> m a -> m a #

Temporarily bind a collection of names to values

bindTypes :: MonadState CheckState m => Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) -> m a -> m a #

Temporarily bind a collection of names to types

withScopedTypeVars :: (MonadState CheckState m, MonadWriter MultipleErrors m) => ModuleName -> [(Text, SourceType)] -> m a -> m a #

Temporarily bind a collection of names to types

withTypeClassDictionaries :: MonadState CheckState m => [NamedDict] -> m a -> m a #

Temporarily make a collection of type class dictionaries available

bindLocalVariables :: MonadState CheckState m => [(SourceSpan, Ident, SourceType, NameVisibility)] -> m a -> m a #

Temporarily bind a collection of names to local variables

makeBindingGroupVisible :: MonadState CheckState m => m () #

Update the visibility of all names to Defined

modifyEnv :: MonadState CheckState m => (Environment -> Environment) -> m () #

Modify the Environment

withBindingGroupVisible :: MonadState CheckState m => m a -> m a #

Update the visibility of all names to Defined in the scope of the provided action

preservingNames :: MonadState CheckState m => m a -> m a #

Perform an action while preserving the names from the Environment.

lookupVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m SourceType #

Lookup the type of a value by name in the Environment

getVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m NameVisibility #

Lookup the visibility of a value by name in the Environment

checkVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m () #

Assert that a name is visible

putEnv :: MonadState CheckState m => Environment -> m () #

Update the Environment

runCheck :: Functor m => CheckState -> StateT CheckState m a -> m (a, Environment) #

Run a computation in the typechecking monad, failing with an error, or succeeding with a return value and the final Environment.

capturingSubstitution :: MonadState CheckState m => (a -> Substitution -> b) -> m a -> m b #

withoutWarnings :: MonadWriter w m => m a -> m (a, w) #

debugEnv :: Environment -> [String] #

debugTypes :: Environment -> [String] #

debugNames :: Environment -> [String] #

debugValue :: Expr -> String #

version :: Version #