language-ats-0.3.0.4: Parser and pretty-printer for ATS.

Safe HaskellNone
LanguageHaskell2010

Language.ATS

Contents

Description

Main module for the library

Synopsis

Functions for working with syntax

lexATS :: String -> Either String [Token] Source #

This function turns a string into a stream of tokens for the parser.

parse :: String -> Either (ATSError String) ATS Source #

Parse a string containing ATS source.

printATS :: ATS -> String Source #

Pretty-print with sensible defaults.

printATSCustom Source #

Arguments

:: Float

Ribbon fraction

-> Int

Ribbon width

-> ATS 
-> String 

printATSFast :: ATS -> String Source #

Slightly faster pretty-printer without indendation (for code generation).

Library functions

Syntax Tree

newtype ATS Source #

Newtype wrapper containing a list of declarations

Constructors

ATS 

Fields

Instances

Eq ATS Source # 

Methods

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

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

Show ATS Source # 

Methods

showsPrec :: Int -> ATS -> ShowS #

show :: ATS -> String #

showList :: [ATS] -> ShowS #

Generic ATS Source # 

Associated Types

type Rep ATS :: * -> * #

Methods

from :: ATS -> Rep ATS x #

to :: Rep ATS x -> ATS #

Semigroup ATS Source # 

Methods

(<>) :: ATS -> ATS -> ATS #

sconcat :: NonEmpty ATS -> ATS #

stimes :: Integral b => b -> ATS -> ATS #

Monoid ATS Source # 

Methods

mempty :: ATS #

mappend :: ATS -> ATS -> ATS #

mconcat :: [ATS] -> ATS #

NFData ATS Source # 

Methods

rnf :: ATS -> () #

type Rep ATS Source # 
type Rep ATS = D1 * (MetaData "ATS" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" True) (C1 * (MetaCons "ATS" PrefixI True) (S1 * (MetaSel (Just Symbol "unATS") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Declaration])))

data Declaration Source #

Declare something in a scope (a function, value, action, etc.)

Constructors

Func 

Fields

Impl [Arg] Implementation 
ProofImpl [Arg] Implementation 
Val Addendum (Maybe Type) Pattern Expression 
StaVal [Universal] String Type 
PrVal Pattern Expression 
Var (Maybe Type) Pattern (Maybe Expression) (Maybe Expression) 
AndDecl (Maybe Type) Pattern Expression 
Include String 
Staload Bool (Maybe String) String 
Stadef String SortArgs Type 
CBlock String 
TypeDef AlexPosn String SortArgs Type 
ViewTypeDef AlexPosn String SortArgs Type 
SumType 
SumViewType 
AbsType AlexPosn String SortArgs (Maybe Type) 
AbsViewType AlexPosn String SortArgs (Maybe Type) 
AbsView AlexPosn String SortArgs (Maybe Type) 
AbsVT0p AlexPosn String SortArgs (Maybe Type) 
AbsT0p AlexPosn String SortArgs (Maybe Type) 
ViewDef AlexPosn String SortArgs Type 
OverloadOp AlexPosn BinOp Name (Maybe Int) 
OverloadIdent AlexPosn String Name (Maybe Int) 
Comment 

Fields

DataProp AlexPosn String SortArgs [DataPropLeaf] 
DataView AlexPosn String SortArgs [Leaf] 
Extern AlexPosn Declaration 
Define String 
SortDef AlexPosn String (Either Sort Universal) 
AndD Declaration Declaration 
Local AlexPosn ATS ATS 
AbsProp AlexPosn String [Arg] 
Assume Name [Arg] Type 
TKind AlexPosn Name String 
SymIntr AlexPosn Name 
Stacst AlexPosn Name Type (Maybe Expression) 
PropDef AlexPosn String [Arg] Type 
FixityDecl Fixity [String] 
MacDecl AlexPosn String [String] Expression 
DataSort AlexPosn String [DataSortLeaf] 
Exception String Type 

data Expression Source #

A (possibly effectful) expression.

Constructors

Let AlexPosn ATS (Maybe Expression) 
VoidLiteral AlexPosn 
Call Name [[Type]] [Type] (Maybe [Expression]) [Expression] 
NamedVal Name 
ListLiteral AlexPosn String Type [Expression] 
If 

Fields

BoolLit Bool 
TimeLit String 
FloatLit Float 
IntLit Int 
UnderscoreLit AlexPosn 
Lambda AlexPosn LambdaType Pattern Expression 
LinearLambda AlexPosn LambdaType Pattern Expression 
Index AlexPosn Name Expression 
Access AlexPosn Expression Name 
StringLit String 
CharLit Char 
AddrAt AlexPosn Expression 
ViewAt AlexPosn Expression 
Binary BinOp Expression Expression 
Unary UnOp Expression 
IfCase 
Case 

Fields

RecordValue AlexPosn [(String, Expression)] (Maybe Type) 
Precede Expression Expression 
ProofExpr AlexPosn Expression Expression 
TypeSignature Expression Type 
WhereExp Expression [Declaration] 
TupleEx AlexPosn [Expression] 
While AlexPosn Expression Expression 
Actions ATS 
Begin AlexPosn Expression 
BinList 

Fields

PrecedeList 

Fields

FixAt String StackFunction 
LambdaAt StackFunction 
ParenExpr AlexPosn Expression 
CommentExpr String Expression 
MacroVar AlexPosn String 

Instances

Eq Expression Source # 
Show Expression Source # 
Generic Expression Source # 

Associated Types

type Rep Expression :: * -> * #

NFData Expression Source # 

Methods

rnf :: Expression -> () #

Recursive Expression Source # 

Methods

project :: Expression -> Base Expression Expression #

cata :: (Base Expression a -> a) -> Expression -> a #

para :: (Base Expression (Expression, a) -> a) -> Expression -> a #

gpara :: (Corecursive Expression, Comonad w) => (forall b. Base Expression (w b) -> w (Base Expression b)) -> (Base Expression (EnvT Expression w a) -> a) -> Expression -> a #

prepro :: Corecursive Expression => (forall b. Base Expression b -> Base Expression b) -> (Base Expression a -> a) -> Expression -> a #

gprepro :: (Corecursive Expression, Comonad w) => (forall b. Base Expression (w b) -> w (Base Expression b)) -> (forall c. Base Expression c -> Base Expression c) -> (Base Expression (w a) -> a) -> Expression -> a #

Corecursive Expression Source # 

Methods

embed :: Base Expression Expression -> Expression #

ana :: (a -> Base Expression a) -> a -> Expression #

apo :: (a -> Base Expression (Either Expression a)) -> a -> Expression #

postpro :: Recursive Expression => (forall b. Base Expression b -> Base Expression b) -> (a -> Base Expression a) -> a -> Expression #

gpostpro :: (Recursive Expression, Monad m) => (forall b. m (Base Expression b) -> Base Expression (m b)) -> (forall c. Base Expression c -> Base Expression c) -> (a -> Base Expression (m a)) -> a -> Expression #

type Rep Expression Source # 
type Rep Expression = D1 * (MetaData "Expression" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Let" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * ATS)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Expression)))))) (C1 * (MetaCons "VoidLiteral" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)))) ((:+:) * (C1 * (MetaCons "Call" PrefixI False) ((:*:) * ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [[Type]]))) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Type])) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe [Expression]))) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Expression])))))) (C1 * (MetaCons "NamedVal" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name))))) ((:+:) * ((:+:) * (C1 * (MetaCons "ListLiteral" PrefixI False) ((:*:) * ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Expression]))))) (C1 * (MetaCons "If" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "cond") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) ((:*:) * (S1 * (MetaSel (Just Symbol "whenTrue") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Just Symbol "elseExpr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Expression))))))) ((:+:) * (C1 * (MetaCons "BoolLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Bool))) ((:+:) * (C1 * (MetaCons "TimeLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))) (C1 * (MetaCons "FloatLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Float))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "IntLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Int))) (C1 * (MetaCons "UnderscoreLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)))) ((:+:) * (C1 * (MetaCons "Lambda" PrefixI False) ((:*:) * ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * LambdaType))) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))) ((:+:) * (C1 * (MetaCons "LinearLambda" PrefixI False) ((:*:) * ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * LambdaType))) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))) (C1 * (MetaCons "Index" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "Access" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name))))) (C1 * (MetaCons "StringLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "CharLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Char))) ((:+:) * (C1 * (MetaCons "AddrAt" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))) (C1 * (MetaCons "ViewAt" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))))))) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Binary" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * BinOp)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))) (C1 * (MetaCons "Unary" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * UnOp)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))) ((:+:) * (C1 * (MetaCons "IfCase" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "posE") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Just Symbol "ifArms") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [(Expression, LambdaType, Expression)])))) ((:+:) * (C1 * (MetaCons "Case" PrefixI True) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "posE") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Just Symbol "kind") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) ((:*:) * (S1 * (MetaSel (Just Symbol "val") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Just Symbol "arms") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [(Pattern, LambdaType, Expression)]))))) (C1 * (MetaCons "RecordValue" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [(String, Expression)])) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Type))))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "Precede" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))) (C1 * (MetaCons "ProofExpr" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))))) ((:+:) * (C1 * (MetaCons "TypeSignature" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)))) ((:+:) * (C1 * (MetaCons "WhereExp" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Declaration])))) (C1 * (MetaCons "TupleEx" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Expression])))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "While" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))))) (C1 * (MetaCons "Actions" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * ATS)))) ((:+:) * (C1 * (MetaCons "Begin" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))) ((:+:) * (C1 * (MetaCons "BinList" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "_op") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * BinOp)) (S1 * (MetaSel (Just Symbol "_exprs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Expression])))) (C1 * (MetaCons "PrecedeList" PrefixI True) (S1 * (MetaSel (Just Symbol "_exprs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Expression])))))) ((:+:) * ((:+:) * (C1 * (MetaCons "FixAt" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StackFunction)))) (C1 * (MetaCons "LambdaAt" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StackFunction)))) ((:+:) * (C1 * (MetaCons "ParenExpr" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))) ((:+:) * (C1 * (MetaCons "CommentExpr" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)))) (C1 * (MetaCons "MacroVar" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))))))))))
type Base Expression Source # 

data Type Source #

A type for parsed ATS types

Instances

Eq Type Source # 

Methods

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

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

Show Type Source # 

Methods

showsPrec :: Int -> Type -> ShowS #

show :: Type -> String #

showList :: [Type] -> ShowS #

Generic Type Source # 

Associated Types

type Rep Type :: * -> * #

Methods

from :: Type -> Rep Type x #

to :: Rep Type x -> Type #

NFData Type Source # 

Methods

rnf :: Type -> () #

Recursive Type Source # 

Methods

project :: Type -> Base Type Type #

cata :: (Base Type a -> a) -> Type -> a #

para :: (Base Type (Type, a) -> a) -> Type -> a #

gpara :: (Corecursive Type, Comonad w) => (forall b. Base Type (w b) -> w (Base Type b)) -> (Base Type (EnvT Type w a) -> a) -> Type -> a #

prepro :: Corecursive Type => (forall b. Base Type b -> Base Type b) -> (Base Type a -> a) -> Type -> a #

gprepro :: (Corecursive Type, Comonad w) => (forall b. Base Type (w b) -> w (Base Type b)) -> (forall c. Base Type c -> Base Type c) -> (Base Type (w a) -> a) -> Type -> a #

Corecursive Type Source # 

Methods

embed :: Base Type Type -> Type #

ana :: (a -> Base Type a) -> a -> Type #

apo :: (a -> Base Type (Either Type a)) -> a -> Type #

postpro :: Recursive Type => (forall b. Base Type b -> Base Type b) -> (a -> Base Type a) -> a -> Type #

gpostpro :: (Recursive Type, Monad m) => (forall b. m (Base Type b) -> Base Type (m b)) -> (forall c. Base Type c -> Base Type c) -> (a -> Base Type (m a)) -> a -> Type #

type Rep Type Source # 
type Rep Type = D1 * (MetaData "Type" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Tuple" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Type])))) (C1 * (MetaCons "Named" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)))) ((:+:) * (C1 * (MetaCons "Ex" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Existential)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Type))))) ((:+:) * (C1 * (MetaCons "ForA" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Universal)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)))) (C1 * (MetaCons "Dependent" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "_typeCall") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)) (S1 * (MetaSel (Just Symbol "_typeCallArgs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Type]))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "Unconsumed" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))) (C1 * (MetaCons "AsProof" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Type)))))) ((:+:) * (C1 * (MetaCons "FromVT" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))) ((:+:) * (C1 * (MetaCons "MaybeVal" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))) (C1 * (MetaCons "AtExpr" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression))))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "AtType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)))) (C1 * (MetaCons "ProofType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Type])) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)))))) ((:+:) * (C1 * (MetaCons "ConcreteType" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression))) ((:+:) * (C1 * (MetaCons "RefType" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))) (C1 * (MetaCons "ViewType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "FunctionType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type))))) ((:+:) * (C1 * (MetaCons "NoneType" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "ImplicitType" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))))) ((:+:) * (C1 * (MetaCons "ViewLiteral" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) ((:+:) * (C1 * (MetaCons "AnonymousRecord" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [(String, Type)])))) (C1 * (MetaCons "ParenType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Type)))))))))
type Base Type Source # 
type Base Type

data Function Source #

A function declaration accounting for all keywords ATS uses to define them.

Constructors

Fun 

Fields

Fn 

Fields

Fnx 

Fields

And 

Fields

PrFun 

Fields

PrFn 

Fields

Praxi 

Fields

CastFn 

Fields

Instances

Eq Function Source # 
Show Function Source # 
Generic Function Source # 

Associated Types

type Rep Function :: * -> * #

Methods

from :: Function -> Rep Function x #

to :: Rep Function x -> Function #

NFData Function Source # 

Methods

rnf :: Function -> () #

type Rep Function Source # 

data Implementation Source #

An implement or primplmnt declaration

Constructors

Implement 

Fields

Instances

Eq Implementation Source # 
Show Implementation Source # 
Generic Implementation Source # 

Associated Types

type Rep Implementation :: * -> * #

NFData Implementation Source # 

Methods

rnf :: Implementation -> () #

type Rep Implementation Source # 

data Pattern Source #

A data type for patterns.

Instances

Eq Pattern Source # 

Methods

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

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

Show Pattern Source # 
Generic Pattern Source # 

Associated Types

type Rep Pattern :: * -> * #

Methods

from :: Pattern -> Rep Pattern x #

to :: Rep Pattern x -> Pattern #

NFData Pattern Source # 

Methods

rnf :: Pattern -> () #

Recursive Pattern Source # 

Methods

project :: Pattern -> Base Pattern Pattern #

cata :: (Base Pattern a -> a) -> Pattern -> a #

para :: (Base Pattern (Pattern, a) -> a) -> Pattern -> a #

gpara :: (Corecursive Pattern, Comonad w) => (forall b. Base Pattern (w b) -> w (Base Pattern b)) -> (Base Pattern (EnvT Pattern w a) -> a) -> Pattern -> a #

prepro :: Corecursive Pattern => (forall b. Base Pattern b -> Base Pattern b) -> (Base Pattern a -> a) -> Pattern -> a #

gprepro :: (Corecursive Pattern, Comonad w) => (forall b. Base Pattern (w b) -> w (Base Pattern b)) -> (forall c. Base Pattern c -> Base Pattern c) -> (Base Pattern (w a) -> a) -> Pattern -> a #

Corecursive Pattern Source # 

Methods

embed :: Base Pattern Pattern -> Pattern #

ana :: (a -> Base Pattern a) -> a -> Pattern #

apo :: (a -> Base Pattern (Either Pattern a)) -> a -> Pattern #

postpro :: Recursive Pattern => (forall b. Base Pattern b -> Base Pattern b) -> (a -> Base Pattern a) -> a -> Pattern #

gpostpro :: (Recursive Pattern, Monad m) => (forall b. m (Base Pattern b) -> Base Pattern (m b)) -> (forall c. Base Pattern c -> Base Pattern c) -> (a -> Base Pattern (m a)) -> a -> Pattern #

type Rep Pattern Source # 
type Rep Pattern = D1 * (MetaData "Pattern" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Wildcard" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "PName" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Pattern]))))) ((:+:) * (C1 * (MetaCons "PSum" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern)))) ((:+:) * (C1 * (MetaCons "PLiteral" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression))) (C1 * (MetaCons "Guarded" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Expression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern)))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "Free" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern))) ((:+:) * (C1 * (MetaCons "Proof" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Pattern])) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Pattern]))))) (C1 * (MetaCons "TuplePattern" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Pattern]))))) ((:+:) * (C1 * (MetaCons "AtPattern" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern)))) ((:+:) * (C1 * (MetaCons "UniversalPattern" PrefixI False) ((:*:) * ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Universal])) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern))))) (C1 * (MetaCons "ExistentialPattern" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Existential)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Pattern))))))))
type Base Pattern Source # 

data Name Source #

Constructors

Unqualified String 
Qualified AlexPosn String String

A name can be qualified ($UN.unsafefn)

SpecialName AlexPosn String

A name for builtin functions such as $showtype.

Functorial String String 
FieldName AlexPosn String String 
Unnamed AlexPosn 

Instances

Eq Name Source # 

Methods

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

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

Show Name Source # 

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

Generic Name Source # 

Associated Types

type Rep Name :: * -> * #

Methods

from :: Name -> Rep Name x #

to :: Rep Name x -> Name #

NFData Name Source # 

Methods

rnf :: Name -> () #

type Rep Name Source # 
type Rep Name = D1 * (MetaData "Name" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * (C1 * (MetaCons "Unqualified" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))) ((:+:) * (C1 * (MetaCons "Qualified" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))))) (C1 * (MetaCons "SpecialName" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))))) ((:+:) * (C1 * (MetaCons "Functorial" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "FieldName" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))))) (C1 * (MetaCons "Unnamed" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))))))

data UnOp Source #

~ is used to negate numbers in ATS

Constructors

Negate 
Deref 
SpecialOp String 

Instances

Eq UnOp Source # 

Methods

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

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

Show UnOp Source # 

Methods

showsPrec :: Int -> UnOp -> ShowS #

show :: UnOp -> String #

showList :: [UnOp] -> ShowS #

Generic UnOp Source # 

Associated Types

type Rep UnOp :: * -> * #

Methods

from :: UnOp -> Rep UnOp x #

to :: Rep UnOp x -> UnOp #

NFData UnOp Source # 

Methods

rnf :: UnOp -> () #

type Rep UnOp Source # 
type Rep UnOp = D1 * (MetaData "UnOp" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * (C1 * (MetaCons "Negate" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "Deref" PrefixI False) (U1 *)) (C1 * (MetaCons "SpecialOp" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))))

data BinOp Source #

Binary operators on expressions

Instances

Eq BinOp Source # 

Methods

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

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

Ord BinOp Source # 

Methods

compare :: BinOp -> BinOp -> Ordering #

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

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

(>) :: BinOp -> BinOp -> Bool #

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

max :: BinOp -> BinOp -> BinOp #

min :: BinOp -> BinOp -> BinOp #

Show BinOp Source # 

Methods

showsPrec :: Int -> BinOp -> ShowS #

show :: BinOp -> String #

showList :: [BinOp] -> ShowS #

Generic BinOp Source # 

Associated Types

type Rep BinOp :: * -> * #

Methods

from :: BinOp -> Rep BinOp x #

to :: Rep BinOp x -> BinOp #

NFData BinOp Source # 

Methods

rnf :: BinOp -> () #

type Rep BinOp Source # 
type Rep BinOp = D1 * (MetaData "BinOp" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Add" PrefixI False) (U1 *)) (C1 * (MetaCons "Mult" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "Div" PrefixI False) (U1 *)) (C1 * (MetaCons "Sub" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "GreaterThan" PrefixI False) (U1 *)) (C1 * (MetaCons "GreaterThanEq" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "LessThan" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "LessThanEq" PrefixI False) (U1 *)) (C1 * (MetaCons "Equal" PrefixI False) (U1 *)))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "NotEqual" PrefixI False) (U1 *)) (C1 * (MetaCons "LogicalAnd" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "LogicalOr" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "StaticEq" PrefixI False) (U1 *)) (C1 * (MetaCons "Mod" PrefixI False) (U1 *))))) ((:+:) * ((:+:) * (C1 * (MetaCons "NotEq" PrefixI False) (U1 *)) (C1 * (MetaCons "Mutate" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "At" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "SpearOp" PrefixI False) (U1 *)) (C1 * (MetaCons "SpecialInfix" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))))))))

data Leaf Source #

Instances

Eq Leaf Source # 

Methods

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

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

Show Leaf Source # 

Methods

showsPrec :: Int -> Leaf -> ShowS #

show :: Leaf -> String #

showList :: [Leaf] -> ShowS #

Generic Leaf Source # 

Associated Types

type Rep Leaf :: * -> * #

Methods

from :: Leaf -> Rep Leaf x #

to :: Rep Leaf x -> Leaf #

NFData Leaf Source # 

Methods

rnf :: Leaf -> () #

type Rep Leaf Source # 

data Arg Source #

An argument to a function.

Constructors

Arg (Paired String Type) 
PrfArg Arg Arg 
NoArgs 

Instances

Eq Arg Source # 

Methods

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

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

Show Arg Source # 

Methods

showsPrec :: Int -> Arg -> ShowS #

show :: Arg -> String #

showList :: [Arg] -> ShowS #

Generic Arg Source # 

Associated Types

type Rep Arg :: * -> * #

Methods

from :: Arg -> Rep Arg x #

to :: Rep Arg x -> Arg #

NFData Arg Source # 

Methods

rnf :: Arg -> () #

type Rep Arg Source # 

data Addendum Source #

Determines the default behavior for incomplete pattern matches

Constructors

None 
Plus 
Minus 

Instances

Eq Addendum Source # 
Data Addendum Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Addendum -> c Addendum #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Addendum #

toConstr :: Addendum -> Constr #

dataTypeOf :: Addendum -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Addendum) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Addendum) #

gmapT :: (forall b. Data b => b -> b) -> Addendum -> Addendum #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Addendum -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Addendum -> r #

gmapQ :: (forall d. Data d => d -> u) -> Addendum -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Addendum -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Addendum -> m Addendum #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Addendum -> m Addendum #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Addendum -> m Addendum #

Show Addendum Source # 
Generic Addendum Source # 

Associated Types

type Rep Addendum :: * -> * #

Methods

from :: Addendum -> Rep Addendum x #

to :: Rep Addendum x -> Addendum #

Pretty Addendum Source # 

Methods

pretty :: Addendum -> Doc #

prettyList :: [Addendum] -> Doc #

NFData Addendum Source # 

Methods

rnf :: Addendum -> () #

type Rep Addendum # 
type Rep Addendum = D1 * (MetaData "Addendum" "Language.ATS.Lexer" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * (C1 * (MetaCons "None" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "Plus" PrefixI False) (U1 *)) (C1 * (MetaCons "Minus" PrefixI False) (U1 *))))

data Universal Source #

Wrapper for universal quantifiers (refinement types)

Constructors

Universal 

data PreFunction Source #

Constructors

PreF 

Fields

Instances

Eq PreFunction Source # 
Show PreFunction Source # 
Generic PreFunction Source # 

Associated Types

type Rep PreFunction :: * -> * #

NFData PreFunction Source # 

Methods

rnf :: PreFunction -> () #

type Rep PreFunction Source # 

data StaticExpression Source #

Instances

Eq StaticExpression Source # 
Show StaticExpression Source # 
Generic StaticExpression Source # 
NFData StaticExpression Source # 

Methods

rnf :: StaticExpression -> () #

Recursive StaticExpression Source # 
Corecursive StaticExpression Source # 
type Rep StaticExpression Source # 
type Rep StaticExpression = D1 * (MetaData "StaticExpression" "Language.ATS.Types" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "StaticVal" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name))) (C1 * (MetaCons "StaticBinary" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * BinOp)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)))))) ((:+:) * (C1 * (MetaCons "StaticInt" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Int))) ((:+:) * (C1 * (MetaCons "SPrecede" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)))) (C1 * (MetaCons "StaticBool" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Bool)))))) ((:+:) * ((:+:) * (C1 * (MetaCons "StaticVoid" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "Sif" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "scond") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)) ((:*:) * (S1 * (MetaSel (Just Symbol "wwhenTrue") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)) (S1 * (MetaSel (Just Symbol "selseExpr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)))))) ((:+:) * (C1 * (MetaCons "SCall" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Name)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [StaticExpression])))) ((:+:) * (C1 * (MetaCons "SUnary" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * UnOp)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * StaticExpression)))) (C1 * (MetaCons "SLet" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Declaration])) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe StaticExpression))))))))))
type Base StaticExpression Source # 

data Paired a b Source #

Constructors

Both a b 
First a 
Second b 

Instances

(Eq b, Eq a) => Eq (Paired a b) Source # 

Methods

(==) :: Paired a b -> Paired a b -> Bool #

(/=) :: Paired a b -> Paired a b -> Bool #

(Show b, Show a) => Show (Paired a b) Source # 

Methods

showsPrec :: Int -> Paired a b -> ShowS #

show :: Paired a b -> String #

showList :: [Paired a b] -> ShowS #

Generic (Paired a b) Source # 

Associated Types

type Rep (Paired a b) :: * -> * #

Methods

from :: Paired a b -> Rep (Paired a b) x #

to :: Rep (Paired a b) x -> Paired a b #

(NFData b, NFData a) => NFData (Paired a b) Source # 

Methods

rnf :: Paired a b -> () #

type Rep (Paired a b) Source # 

data Fixity Source #

Constructors

RightFix 

Fields

LeftFix 

Fields

Pre 

Fields

Post 

Fields

Infix 

Fields

Instances

Eq Fixity Source # 

Methods

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

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

Ord Fixity Source # 
Show Fixity Source # 
Generic Fixity Source # 

Associated Types

type Rep Fixity :: * -> * #

Methods

from :: Fixity -> Rep Fixity x #

to :: Rep Fixity x -> Fixity #

NFData Fixity Source # 

Methods

rnf :: Fixity -> () #

type Rep Fixity Source # 

data Sort Source #

A datatype for sorts.

Constructors

NamedSort 

Fields

T0p Addendum

t@ype

Vt0p Addendum

vt@ype

Addr 
VType AlexPosn Addendum

viewtype or vtype

View AlexPosn Addendum

view

Instances

Eq Sort Source # 

Methods

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

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

Show Sort Source # 

Methods

showsPrec :: Int -> Sort -> ShowS #

show :: Sort -> String #

showList :: [Sort] -> ShowS #

Generic Sort Source # 

Associated Types

type Rep Sort :: * -> * #

Methods

from :: Sort -> Rep Sort x #

to :: Rep Sort x -> Sort #

NFData Sort Source # 

Methods

rnf :: Sort -> () #

type Rep Sort Source # 

Lexical types

data Token Source #

Instances

Eq Token Source # 

Methods

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

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

Show Token Source # 

Methods

showsPrec :: Int -> Token -> ShowS #

show :: Token -> String #

showList :: [Token] -> ShowS #

Generic Token Source # 

Associated Types

type Rep Token :: * -> * #

Methods

from :: Token -> Rep Token x #

to :: Rep Token x -> Token #

Pretty Token Source # 

Methods

pretty :: Token -> Doc #

prettyList :: [Token] -> Doc #

NFData Token Source # 

Methods

rnf :: Token -> () #

type Rep Token # 
type Rep Token = D1 * (MetaData "Token" "Language.ATS.Lexer" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "Identifier" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "SpecialIdentifier" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "Keyword" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Keyword)))))) ((:+:) * (C1 * (MetaCons "IntTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Int)))) ((:+:) * (C1 * (MetaCons "FloatTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Float)))) (C1 * (MetaCons "CharTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Char))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "StringTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "Special" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "CBlockLex" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))))) ((:+:) * ((:+:) * (C1 * (MetaCons "IdentifierSpace" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "Operator" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))))) ((:+:) * (C1 * (MetaCons "Arrow" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "FuncType" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "CommentLex" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "CommentBegin" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "CommentEnd" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))))) ((:+:) * (C1 * (MetaCons "CommentContents" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "MacroBlock" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "TimeTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String))))))) ((:+:) * ((:+:) * (C1 * (MetaCons "SignatureTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "DoubleParenTok" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "DoubleBracesTok" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))))) ((:+:) * ((:+:) * (C1 * (MetaCons "DoubleBracketTok" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn))) (C1 * (MetaCons "SpecialBracket" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)))) ((:+:) * (C1 * (MetaCons "FixityTok" PrefixI False) ((:*:) * (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * AlexPosn)) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) (C1 * (MetaCons "End" PrefixI False) (U1 *)))))))

data AlexPosn Source #

Constructors

AlexPn !Int !Int !Int 

Instances

Eq AlexPosn Source # 
Data AlexPosn # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AlexPosn -> c AlexPosn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AlexPosn #

toConstr :: AlexPosn -> Constr #

dataTypeOf :: AlexPosn -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c AlexPosn) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AlexPosn) #

gmapT :: (forall b. Data b => b -> b) -> AlexPosn -> AlexPosn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AlexPosn -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AlexPosn -> r #

gmapQ :: (forall d. Data d => d -> u) -> AlexPosn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AlexPosn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AlexPosn -> m AlexPosn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AlexPosn -> m AlexPosn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AlexPosn -> m AlexPosn #

Show AlexPosn Source # 
Generic AlexPosn # 

Associated Types

type Rep AlexPosn :: * -> * #

Methods

from :: AlexPosn -> Rep AlexPosn x #

to :: Rep AlexPosn x -> AlexPosn #

NFData AlexPosn # 

Methods

rnf :: AlexPosn -> () #

type Rep AlexPosn # 

data Keyword Source #

Instances

Eq Keyword Source # 

Methods

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

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

Show Keyword Source # 
Generic Keyword Source # 

Associated Types

type Rep Keyword :: * -> * #

Methods

from :: Keyword -> Rep Keyword x #

to :: Rep Keyword x -> Keyword #

Pretty Keyword Source # 

Methods

pretty :: Keyword -> Doc #

prettyList :: [Keyword] -> Doc #

NFData Keyword Source # 

Methods

rnf :: Keyword -> () #

type Rep Keyword # 
type Rep Keyword = D1 * (MetaData "Keyword" "Language.ATS.Lexer" "language-ats-0.3.0.4-7lr1RfLfAYD8HtJvoKDjL" False) ((:+:) * ((:+:) * ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwFun" PrefixI False) (U1 *)) (C1 * (MetaCons "KwFnx" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwAnd" PrefixI False) (U1 *)) (C1 * (MetaCons "KwDatatype" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwDatavtype" PrefixI False) (U1 *)) (C1 * (MetaCons "KwAssume" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwTypedef" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwVtypedef" PrefixI False) (U1 *)) (C1 * (MetaCons "KwVtype" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwStaload" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Bool))) (C1 * (MetaCons "KwLet" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwIn" PrefixI False) (U1 *)) (C1 * (MetaCons "KwLocal" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwEnd" PrefixI False) (U1 *)) (C1 * (MetaCons "KwImplement" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwCase" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) ((:+:) * (C1 * (MetaCons "KwIf" PrefixI False) (U1 *)) (C1 * (MetaCons "KwSif" PrefixI False) (U1 *))))))) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwThen" PrefixI False) (U1 *)) (C1 * (MetaCons "KwElse" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwVal" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) (C1 * (MetaCons "KwVar" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwLambda" PrefixI False) (U1 *)) (C1 * (MetaCons "KwLinearLambda" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwInclude" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwWhen" PrefixI False) (U1 *)) (C1 * (MetaCons "KwOf" PrefixI False) (U1 *)))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwAbsprop" PrefixI False) (U1 *)) (C1 * (MetaCons "KwPrval" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwStadef" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwPraxi" PrefixI False) (U1 *)) (C1 * (MetaCons "KwWhile" PrefixI False) (U1 *))))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwWhere" PrefixI False) (U1 *)) (C1 * (MetaCons "KwBegin" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwOverload" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwWith" PrefixI False) (U1 *)) (C1 * (MetaCons "KwIfCase" PrefixI False) (U1 *)))))))) ((:+:) * ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwDataview" PrefixI False) (U1 *)) (C1 * (MetaCons "KwDataprop" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwView" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) (C1 * (MetaCons "KwAbstype" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwType" PrefixI False) (U1 *)) (C1 * (MetaCons "KwAbst0p" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum)))) ((:+:) * (C1 * (MetaCons "KwAbsvt0p" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) ((:+:) * (C1 * (MetaCons "KwT0p" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))) (C1 * (MetaCons "KwVt0p" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Addendum))))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwPrfun" PrefixI False) (U1 *)) (C1 * (MetaCons "KwPrfn" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwCastfn" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwExtern" PrefixI False) (U1 *)) (C1 * (MetaCons "KwAbsvtype" PrefixI False) (U1 *))))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwProofImplement" PrefixI False) (U1 *)) (C1 * (MetaCons "KwSortdef" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwPropdef" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwRaise" PrefixI False) (U1 *)) (C1 * (MetaCons "KwTKind" PrefixI False) (U1 *))))))) ((:+:) * ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwMod" PrefixI False) (U1 *)) (C1 * (MetaCons "KwFixAt" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwLambdaAt" PrefixI False) (U1 *)) (C1 * (MetaCons "KwAddrAt" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwAddr" PrefixI False) (U1 *)) (C1 * (MetaCons "KwSta" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwViewAt" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwViewdef" PrefixI False) (U1 *)) (C1 * (MetaCons "KwSymintr" PrefixI False) (U1 *)))))) ((:+:) * ((:+:) * ((:+:) * (C1 * (MetaCons "KwAbsview" PrefixI False) (U1 *)) (C1 * (MetaCons "KwFn" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "KwInfix" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwInfixr" PrefixI False) (U1 *)) (C1 * (MetaCons "KwInfixl" PrefixI False) (U1 *))))) ((:+:) * ((:+:) * (C1 * (MetaCons "KwStacst" PrefixI False) (U1 *)) (C1 * (MetaCons "KwListLit" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)))) ((:+:) * (C1 * (MetaCons "KwMacdef" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "KwDatasort" PrefixI False) (U1 *)) (C1 * (MetaCons "KwException" PrefixI False) (U1 *)))))))))

Error types

Lenses