egison-3.10.1: Programming language with non-linear pattern-matching against non-free data

CopyrightSatoshi Egi
LicenseMIT
Safe HaskellSafe
LanguageHaskell98

Language.Egison.AST

Description

This module defines the syntax of Egison.

Documentation

data EgisonExpr Source #

Constructors

CharExpr Char 
StringExpr Text 
BoolExpr Bool 
IntegerExpr Integer 
FloatExpr Double 
VarExpr Var 
FreshVarExpr 
IndexedExpr Bool EgisonExpr [Index EgisonExpr] 
SubrefsExpr Bool EgisonExpr EgisonExpr 
SuprefsExpr Bool EgisonExpr EgisonExpr 
UserrefsExpr Bool EgisonExpr EgisonExpr 
PowerExpr EgisonExpr EgisonExpr 
InductiveDataExpr String [EgisonExpr] 
TupleExpr [EgisonExpr] 
CollectionExpr [InnerExpr] 
ArrayExpr [EgisonExpr] 
HashExpr [(EgisonExpr, EgisonExpr)] 
VectorExpr [EgisonExpr] 
LambdaExpr [Arg] EgisonExpr 
LambdaArgExpr [Char] 
MemoizedLambdaExpr [String] EgisonExpr 
MemoizeExpr [(EgisonExpr, EgisonExpr, EgisonExpr)] EgisonExpr 
CambdaExpr String EgisonExpr 
ProcedureExpr [String] EgisonExpr 
MacroExpr [String] EgisonExpr 
PatternFunctionExpr [String] EgisonPattern 
IfExpr EgisonExpr EgisonExpr EgisonExpr 
LetRecExpr [BindingExpr] EgisonExpr 
LetExpr [BindingExpr] EgisonExpr 
LetStarExpr [BindingExpr] EgisonExpr 
WithSymbolsExpr [String] EgisonExpr 
MatchExpr PMMode EgisonExpr EgisonExpr [MatchClause] 
MatchAllExpr PMMode EgisonExpr EgisonExpr [MatchClause] 
MatchLambdaExpr EgisonExpr [MatchClause] 
MatchAllLambdaExpr EgisonExpr [MatchClause] 
MatcherExpr [PatternDef] 
AlgebraicDataMatcherExpr [(String, [EgisonExpr])] 
QuoteExpr EgisonExpr 
QuoteSymbolExpr EgisonExpr 
WedgeApplyExpr EgisonExpr EgisonExpr 
DoExpr [BindingExpr] EgisonExpr 
IoExpr EgisonExpr 
UnaryOpExpr String EgisonExpr 
BinaryOpExpr EgisonBinOp EgisonExpr EgisonExpr 
SeqExpr EgisonExpr EgisonExpr 
ApplyExpr EgisonExpr EgisonExpr 
CApplyExpr EgisonExpr EgisonExpr 
PartialExpr Integer EgisonExpr 
PartialVarExpr Integer 
GenerateArrayExpr EgisonExpr (EgisonExpr, EgisonExpr) 
ArrayBoundsExpr EgisonExpr 
ArrayRefExpr EgisonExpr EgisonExpr 
GenerateTensorExpr EgisonExpr EgisonExpr 
TensorExpr EgisonExpr EgisonExpr EgisonExpr EgisonExpr 
TensorContractExpr EgisonExpr EgisonExpr 
TensorMapExpr EgisonExpr EgisonExpr 
TensorMap2Expr EgisonExpr EgisonExpr EgisonExpr 
TransposeExpr EgisonExpr EgisonExpr 
FlipIndicesExpr EgisonExpr 
FunctionExpr [EgisonExpr] 
SomethingExpr 
UndefinedExpr 
Instances
Eq EgisonExpr Source # 
Instance details

Defined in Language.Egison.AST

Show EgisonExpr Source # 
Instance details

Defined in Language.Egison.AST

Pretty MatchClause Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: MatchClause -> Doc ann #

prettyList :: [MatchClause] -> Doc ann #

Pretty BindingExpr Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: BindingExpr -> Doc ann #

prettyList :: [BindingExpr] -> Doc ann #

Pretty EgisonExpr Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: EgisonExpr -> Doc ann #

prettyList :: [EgisonExpr] -> Doc ann #

PrettyS EgisonExpr Source # 
Instance details

Defined in Language.Egison.Pretty

Show (Index EgisonExpr) Source # 
Instance details

Defined in Language.Egison.AST

PrettyS (Index EgisonExpr) Source # 
Instance details

Defined in Language.Egison.Pretty

data EgisonPattern Source #

Instances
Eq EgisonPattern Source # 
Instance details

Defined in Language.Egison.AST

Show EgisonPattern Source # 
Instance details

Defined in Language.Egison.AST

Pretty EgisonPattern Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: EgisonPattern -> Doc ann #

prettyList :: [EgisonPattern] -> Doc ann #

Pretty MatchClause Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: MatchClause -> Doc ann #

prettyList :: [MatchClause] -> Doc ann #

PrettyS EgisonPattern Source # 
Instance details

Defined in Language.Egison.Pretty

data Var Source #

Constructors

Var [String] [Index ()] 
Instances
Eq Var Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Show Var Source # 
Instance details

Defined in Language.Egison.AST

Methods

showsPrec :: Int -> Var -> ShowS #

show :: Var -> String #

showList :: [Var] -> ShowS #

Generic Var Source # 
Instance details

Defined in Language.Egison.AST

Associated Types

type Rep Var :: Type -> Type #

Methods

from :: Var -> Rep Var x #

to :: Rep Var x -> Var #

Hashable Var Source # 
Instance details

Defined in Language.Egison.AST

Methods

hashWithSalt :: Int -> Var -> Int #

hash :: Var -> Int #

Pretty BindingExpr Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: BindingExpr -> Doc ann #

prettyList :: [BindingExpr] -> Doc ann #

Pretty Var Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: Var -> Doc ann #

prettyList :: [Var] -> Doc ann #

PrettyS Var Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

prettyS :: Var -> String Source #

type Rep Var Source # 
Instance details

Defined in Language.Egison.AST

data Arg Source #

Instances
Eq Arg Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Show Arg Source # 
Instance details

Defined in Language.Egison.AST

Methods

showsPrec :: Int -> Arg -> ShowS #

show :: Arg -> String #

showList :: [Arg] -> ShowS #

Pretty Arg Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: Arg -> Doc ann #

prettyList :: [Arg] -> Doc ann #

PrettyS Arg Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

prettyS :: Arg -> String Source #

data Index a Source #

Instances
Eq a => Eq (Index a) Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Show (Index ()) Source # 
Instance details

Defined in Language.Egison.AST

Methods

showsPrec :: Int -> Index () -> ShowS #

show :: Index () -> String #

showList :: [Index ()] -> ShowS #

Show (Index String) Source # 
Instance details

Defined in Language.Egison.AST

Show (Index EgisonExpr) Source # 
Instance details

Defined in Language.Egison.AST

Show (Index ScalarData) Source # 
Instance details

Defined in Language.Egison.Types

Show (Index EgisonValue) Source # 
Instance details

Defined in Language.Egison.Types

Generic (Index a) Source # 
Instance details

Defined in Language.Egison.AST

Associated Types

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

Methods

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

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

Hashable (Index ()) Source # 
Instance details

Defined in Language.Egison.AST

Methods

hashWithSalt :: Int -> Index () -> Int #

hash :: Index () -> Int #

PrettyS (Index EgisonExpr) Source # 
Instance details

Defined in Language.Egison.Pretty

PrettyS (Index ScalarData) Source # 
Instance details

Defined in Language.Egison.Pretty

PrettyS (Index EgisonValue) Source # 
Instance details

Defined in Language.Egison.Pretty

type Rep (Index a) Source # 
Instance details

Defined in Language.Egison.AST

type Rep (Index a) = D1 (MetaData "Index" "Language.Egison.AST" "egison-3.10.1-1CoeIFISJriC1SnHBnyqXP" False) (((C1 (MetaCons "Subscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: C1 (MetaCons "Superscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) :+: (C1 (MetaCons "SupSubscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: C1 (MetaCons "MultiSubscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))) :+: ((C1 (MetaCons "MultiSuperscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: C1 (MetaCons "DFscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer))) :+: (C1 (MetaCons "Userscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: (C1 (MetaCons "DotSubscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: C1 (MetaCons "DotSupscript" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))))))

data PMMode Source #

Constructors

BFSMode 
DFSMode 
Instances
Eq PMMode Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Show PMMode Source # 
Instance details

Defined in Language.Egison.AST

data InnerExpr Source #

Instances
Eq InnerExpr Source # 
Instance details

Defined in Language.Egison.AST

Show InnerExpr Source # 
Instance details

Defined in Language.Egison.AST

Pretty InnerExpr Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: InnerExpr -> Doc ann #

prettyList :: [InnerExpr] -> Doc ann #

PrettyS InnerExpr Source # 
Instance details

Defined in Language.Egison.Pretty

data LoopRange Source #

Instances
Eq LoopRange Source # 
Instance details

Defined in Language.Egison.AST

Show LoopRange Source # 
Instance details

Defined in Language.Egison.AST

PrettyS LoopRange Source # 
Instance details

Defined in Language.Egison.Pretty