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

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 
MemoizedLambdaExpr [String] EgisonExpr 
MemoizeExpr [(EgisonExpr, EgisonExpr, EgisonExpr)] EgisonExpr 
CambdaExpr String EgisonExpr 
ProcedureExpr [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 Infix EgisonExpr EgisonExpr 
SectionExpr Infix (Maybe EgisonExpr) (Maybe 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 
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

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
Functor Index Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Foldable Index Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

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

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

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

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

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

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

toList :: Index a -> [a] #

null :: Index a -> Bool #

length :: Index a -> Int #

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

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

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

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

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

Traversable Index Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

sequenceA :: Applicative f => Index (f a) -> f (Index a) #

mapM :: Monad m => (a -> m b) -> Index a -> m (Index b) #

sequence :: Monad m => Index (m a) -> m (Index a) #

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.MathExpr

Show (Index EgisonValue) Source # 
Instance details

Defined in Language.Egison.Data

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 #

(Pretty a, Complex a) => Pretty (Index a) Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: Index a -> Doc ann #

prettyList :: [Index a] -> Doc ann #

PrettyS a => PrettyS (Index a) Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

prettyS :: Index a -> String Source #

PrettyS (Index EgisonValue) Source # 
Instance details

Defined in Language.Egison.Pretty

type Rep (Index a) Source # 
Instance details

Defined in Language.Egison.AST

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

Pretty LoopRange Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

pretty :: LoopRange -> Doc ann #

prettyList :: [LoopRange] -> Doc ann #

PrettyS LoopRange Source # 
Instance details

Defined in Language.Egison.Pretty

data Infix Source #

Constructors

Infix 
Instances
Eq Infix Source # 
Instance details

Defined in Language.Egison.AST

Methods

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

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

Ord Infix Source # 
Instance details

Defined in Language.Egison.AST

Methods

compare :: Infix -> Infix -> Ordering #

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

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

(>) :: Infix -> Infix -> Bool #

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

max :: Infix -> Infix -> Infix #

min :: Infix -> Infix -> Infix #

Show Infix Source # 
Instance details

Defined in Language.Egison.AST

Methods

showsPrec :: Int -> Infix -> ShowS #

show :: Infix -> String #

showList :: [Infix] -> ShowS #

PrettyS Infix Source # 
Instance details

Defined in Language.Egison.Pretty

Methods

prettyS :: Infix -> String Source #