-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Programming language with non-linear pattern-matching against non-free data
--
-- An interpreter for Egison, a **pattern-matching-oriented**, purely
-- functional programming language. We can directly represent
-- pattern-matching against lists, multisets, sets, trees, graphs and any
-- kind of data types.
--
-- We can find Egison programs in lib and sample
-- directories. This package also include Emacs Lisp file
-- elisp/egison-mode.el.
--
-- We can do non-linear pattern-matching against non-free data types in
-- Egison. An non-free data type is a data type whose data have no
-- canonical form, a standard way to represent that object. It enables us
-- to write elegant programs.
--
-- Twin Primes
--
-- We can use pattern-matching for enumeration. The following code
-- enumerates all twin primes from the infinite list of prime numbers
-- with pattern-matching!
--
--
-- Poker Hands
--
-- The following code is the program that determines poker-hands written
-- in Egison. All hands are expressed in a single pattern.
--
--
-- Mahjong
--
-- We can write a pattern even against mahjong tiles. We modularize
-- patterns to represent complex mahjong hands.
--
--
-- Graphs
--
-- We can pattern-match against graphs. We can write program to solve the
-- travelling salesman problem in a single pattern-matching expression.
--
--
-- Aren't thsese exciting? We can run these demonstrations on our
-- website! Please view and try more demonstrations!
--
-- http://www.egison.org
--
-- Egison makes programming dramatically simple. Please enjoy Egison!
@package egison
@version 4.1.3
-- | This module defines the syntax of Egison.
module Language.Egison.AST
data TopExpr
Define :: VarWithIndices -> Expr -> TopExpr
Test :: Expr -> TopExpr
Execute :: Expr -> TopExpr
LoadFile :: String -> TopExpr
Load :: String -> TopExpr
InfixDecl :: Bool -> Op -> TopExpr
data ConstantExpr
CharExpr :: Char -> ConstantExpr
StringExpr :: Text -> ConstantExpr
BoolExpr :: Bool -> ConstantExpr
IntegerExpr :: Integer -> ConstantExpr
FloatExpr :: Double -> ConstantExpr
SomethingExpr :: ConstantExpr
UndefinedExpr :: ConstantExpr
data Expr
ConstantExpr :: ConstantExpr -> Expr
VarExpr :: String -> Expr
FreshVarExpr :: Expr
IndexedExpr :: Bool -> Expr -> [IndexExpr Expr] -> Expr
SubrefsExpr :: Bool -> Expr -> Expr -> Expr
SuprefsExpr :: Bool -> Expr -> Expr -> Expr
UserrefsExpr :: Bool -> Expr -> Expr -> Expr
TupleExpr :: [Expr] -> Expr
CollectionExpr :: [Expr] -> Expr
ConsExpr :: Expr -> Expr -> Expr
JoinExpr :: Expr -> Expr -> Expr
HashExpr :: [(Expr, Expr)] -> Expr
VectorExpr :: [Expr] -> Expr
LambdaExpr :: [Arg ArgPattern] -> Expr -> Expr
LambdaExpr' :: [Arg VarWithIndices] -> Expr -> Expr
MemoizedLambdaExpr :: [String] -> Expr -> Expr
CambdaExpr :: String -> Expr -> Expr
PatternFunctionExpr :: [String] -> Pattern -> Expr
IfExpr :: Expr -> Expr -> Expr -> Expr
LetExpr :: [BindingExpr] -> Expr -> Expr
LetRecExpr :: [BindingExpr] -> Expr -> Expr
WithSymbolsExpr :: [String] -> Expr -> Expr
MatchExpr :: PMMode -> Expr -> Expr -> [MatchClause] -> Expr
MatchAllExpr :: PMMode -> Expr -> Expr -> [MatchClause] -> Expr
MatchLambdaExpr :: Expr -> [MatchClause] -> Expr
MatchAllLambdaExpr :: Expr -> [MatchClause] -> Expr
MatcherExpr :: [PatternDef] -> Expr
AlgebraicDataMatcherExpr :: [(String, [Expr])] -> Expr
QuoteExpr :: Expr -> Expr
QuoteSymbolExpr :: Expr -> Expr
WedgeApplyExpr :: Expr -> [Expr] -> Expr
DoExpr :: [BindingExpr] -> Expr -> Expr
PrefixExpr :: String -> Expr -> Expr
InfixExpr :: Op -> Expr -> Expr -> Expr
SectionExpr :: Op -> Maybe Expr -> Maybe Expr -> Expr
SeqExpr :: Expr -> Expr -> Expr
ApplyExpr :: Expr -> [Expr] -> Expr
CApplyExpr :: Expr -> Expr -> Expr
AnonParamFuncExpr :: Integer -> Expr -> Expr
AnonTupleParamFuncExpr :: Integer -> Expr -> Expr
AnonListParamFuncExpr :: Integer -> Expr -> Expr
AnonParamExpr :: Integer -> Expr
GenerateTensorExpr :: Expr -> Expr -> Expr
TensorExpr :: Expr -> Expr -> Expr
TensorContractExpr :: Expr -> Expr
TensorMapExpr :: Expr -> Expr -> Expr
TensorMap2Expr :: Expr -> Expr -> Expr -> Expr
TransposeExpr :: Expr -> Expr -> Expr
FlipIndicesExpr :: Expr -> Expr
FunctionExpr :: [String] -> Expr
data Pattern
WildCard :: Pattern
PatVar :: String -> Pattern
ValuePat :: Expr -> Pattern
PredPat :: Expr -> Pattern
IndexedPat :: Pattern -> [Expr] -> Pattern
LetPat :: [BindingExpr] -> Pattern -> Pattern
InfixPat :: Op -> Pattern -> Pattern -> Pattern
NotPat :: Pattern -> Pattern
AndPat :: Pattern -> Pattern -> Pattern
OrPat :: Pattern -> Pattern -> Pattern
ForallPat :: Pattern -> Pattern -> Pattern
TuplePat :: [Pattern] -> Pattern
InductivePat :: String -> [Pattern] -> Pattern
LoopPat :: String -> LoopRange -> Pattern -> Pattern -> Pattern
ContPat :: Pattern
PApplyPat :: Expr -> [Pattern] -> Pattern
VarPat :: String -> Pattern
InductiveOrPApplyPat :: String -> [Pattern] -> Pattern
SeqNilPat :: Pattern
SeqConsPat :: Pattern -> Pattern -> Pattern
LaterPatVar :: Pattern
DApplyPat :: Pattern -> [Pattern] -> Pattern
data VarWithIndices
VarWithIndices :: String -> [VarIndex] -> VarWithIndices
makeApply :: String -> [Expr] -> Expr
data Arg a
ScalarArg :: a -> Arg a
InvertedScalarArg :: a -> Arg a
TensorArg :: a -> Arg a
data ArgPattern
APWildCard :: ArgPattern
APPatVar :: VarWithIndices -> ArgPattern
APInductivePat :: String -> [Arg ArgPattern] -> ArgPattern
APTuplePat :: [Arg ArgPattern] -> ArgPattern
APEmptyPat :: ArgPattern
APConsPat :: Arg ArgPattern -> ArgPattern -> ArgPattern
APSnocPat :: ArgPattern -> Arg ArgPattern -> ArgPattern
data IndexExpr a
Subscript :: a -> IndexExpr a
Superscript :: a -> IndexExpr a
SupSubscript :: a -> IndexExpr a
MultiSubscript :: a -> a -> IndexExpr a
MultiSuperscript :: a -> a -> IndexExpr a
Userscript :: a -> IndexExpr a
data VarIndex
VSubscript :: String -> VarIndex
VSuperscript :: String -> VarIndex
VMultiSubscript :: String -> Integer -> String -> VarIndex
VMultiSuperscript :: String -> Integer -> String -> VarIndex
VGroupScripts :: [VarIndex] -> VarIndex
VSymmScripts :: [VarIndex] -> VarIndex
VAntiSymmScripts :: [VarIndex] -> VarIndex
data PMMode
BFSMode :: PMMode
DFSMode :: PMMode
data BindingExpr
Bind :: PrimitiveDataPattern -> Expr -> BindingExpr
BindWithIndices :: VarWithIndices -> Expr -> BindingExpr
type MatchClause = (Pattern, Expr)
type PatternDef = (PrimitivePatPattern, Expr, [(PrimitiveDataPattern, Expr)])
data LoopRange
LoopRange :: Expr -> Expr -> Pattern -> LoopRange
data PrimitivePatPattern
PPWildCard :: PrimitivePatPattern
PPPatVar :: PrimitivePatPattern
PPValuePat :: String -> PrimitivePatPattern
PPInductivePat :: String -> [PrimitivePatPattern] -> PrimitivePatPattern
PPTuplePat :: [PrimitivePatPattern] -> PrimitivePatPattern
data PDPatternBase var
PDWildCard :: PDPatternBase var
PDPatVar :: var -> PDPatternBase var
PDInductivePat :: String -> [PDPatternBase var] -> PDPatternBase var
PDTuplePat :: [PDPatternBase var] -> PDPatternBase var
PDEmptyPat :: PDPatternBase var
PDConsPat :: PDPatternBase var -> PDPatternBase var -> PDPatternBase var
PDSnocPat :: PDPatternBase var -> PDPatternBase var -> PDPatternBase var
PDConstantPat :: ConstantExpr -> PDPatternBase var
type PrimitiveDataPattern = PDPatternBase String
data Op
Op :: String -> Int -> Assoc -> Bool -> Op
[repr] :: Op -> String
[priority] :: Op -> Int
[assoc] :: Op -> Assoc
[isWedge] :: Op -> Bool
data Assoc
InfixL :: Assoc
InfixR :: Assoc
InfixN :: Assoc
Prefix :: Assoc
reservedExprOp :: [Op]
reservedPatternOp :: [Op]
findOpFrom :: String -> [Op] -> Op
stringToVarWithIndices :: String -> VarWithIndices
extractNameFromVarWithIndices :: VarWithIndices -> String
instance GHC.Show.Show Language.Egison.AST.ConstantExpr
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.AST.Arg a)
instance GHC.Classes.Eq Language.Egison.AST.VarIndex
instance GHC.Show.Show Language.Egison.AST.VarIndex
instance GHC.Classes.Eq Language.Egison.AST.VarWithIndices
instance GHC.Show.Show Language.Egison.AST.VarWithIndices
instance GHC.Show.Show Language.Egison.AST.ArgPattern
instance Data.Traversable.Traversable Language.Egison.AST.IndexExpr
instance Data.Foldable.Foldable Language.Egison.AST.IndexExpr
instance GHC.Base.Functor Language.Egison.AST.IndexExpr
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Egison.AST.IndexExpr a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.AST.IndexExpr a)
instance GHC.Show.Show Language.Egison.AST.PMMode
instance GHC.Show.Show Language.Egison.AST.PrimitivePatPattern
instance GHC.Show.Show var => GHC.Show.Show (Language.Egison.AST.PDPatternBase var)
instance Data.Foldable.Foldable Language.Egison.AST.PDPatternBase
instance GHC.Base.Functor Language.Egison.AST.PDPatternBase
instance GHC.Classes.Ord Language.Egison.AST.Assoc
instance GHC.Classes.Eq Language.Egison.AST.Assoc
instance GHC.Show.Show Language.Egison.AST.Op
instance GHC.Classes.Ord Language.Egison.AST.Op
instance GHC.Classes.Eq Language.Egison.AST.Op
instance GHC.Show.Show Language.Egison.AST.BindingExpr
instance GHC.Show.Show Language.Egison.AST.LoopRange
instance GHC.Show.Show Language.Egison.AST.Pattern
instance GHC.Show.Show Language.Egison.AST.Expr
instance GHC.Show.Show Language.Egison.AST.TopExpr
instance GHC.Show.Show Language.Egison.AST.Assoc
-- | This module provides command line options of Egison interpreter.
module Language.Egison.CmdOptions
data EgisonOpts
EgisonOpts :: Maybe (String, [String]) -> Bool -> Maybe String -> Maybe String -> [(String, String)] -> [String] -> [String] -> Maybe String -> Maybe String -> Maybe String -> Bool -> Bool -> Bool -> Bool -> String -> Maybe String -> Bool -> Bool -> EgisonOpts
[optExecFile] :: EgisonOpts -> Maybe (String, [String])
[optShowVersion] :: EgisonOpts -> Bool
[optEvalString] :: EgisonOpts -> Maybe String
[optExecuteString] :: EgisonOpts -> Maybe String
[optFieldInfo] :: EgisonOpts -> [(String, String)]
[optLoadLibs] :: EgisonOpts -> [String]
[optLoadFiles] :: EgisonOpts -> [String]
[optSubstituteString] :: EgisonOpts -> Maybe String
[optMapTsvInput] :: EgisonOpts -> Maybe String
[optFilterTsvInput] :: EgisonOpts -> Maybe String
[optTsvOutput] :: EgisonOpts -> Bool
[optNoIO] :: EgisonOpts -> Bool
[optShowBanner] :: EgisonOpts -> Bool
[optTestOnly] :: EgisonOpts -> Bool
[optPrompt] :: EgisonOpts -> String
[optMathExpr] :: EgisonOpts -> Maybe String
[optSExpr] :: EgisonOpts -> Bool
[optMathNormalize] :: EgisonOpts -> Bool
defaultOption :: EgisonOpts
cmdParser :: ParserInfo EgisonOpts
-- | This module defines internal representation of Egison language.
module Language.Egison.IExpr
data ITopExpr
IDefine :: Var -> IExpr -> ITopExpr
ITest :: IExpr -> ITopExpr
IExecute :: IExpr -> ITopExpr
ILoadFile :: String -> ITopExpr
ILoad :: String -> ITopExpr
data IExpr
IConstantExpr :: ConstantExpr -> IExpr
IVarExpr :: String -> IExpr
IIndexedExpr :: Bool -> IExpr -> [Index IExpr] -> IExpr
ISubrefsExpr :: Bool -> IExpr -> IExpr -> IExpr
ISuprefsExpr :: Bool -> IExpr -> IExpr -> IExpr
IUserrefsExpr :: Bool -> IExpr -> IExpr -> IExpr
IInductiveDataExpr :: String -> [IExpr] -> IExpr
ITupleExpr :: [IExpr] -> IExpr
ICollectionExpr :: [IExpr] -> IExpr
IConsExpr :: IExpr -> IExpr -> IExpr
IJoinExpr :: IExpr -> IExpr -> IExpr
IHashExpr :: [(IExpr, IExpr)] -> IExpr
IVectorExpr :: [IExpr] -> IExpr
ILambdaExpr :: Maybe Var -> [Var] -> IExpr -> IExpr
IMemoizedLambdaExpr :: [String] -> IExpr -> IExpr
ICambdaExpr :: String -> IExpr -> IExpr
IPatternFunctionExpr :: [String] -> IPattern -> IExpr
IIfExpr :: IExpr -> IExpr -> IExpr -> IExpr
ILetRecExpr :: [IBindingExpr] -> IExpr -> IExpr
ILetExpr :: [IBindingExpr] -> IExpr -> IExpr
IWithSymbolsExpr :: [String] -> IExpr -> IExpr
IMatchExpr :: PMMode -> IExpr -> IExpr -> [IMatchClause] -> IExpr
IMatchAllExpr :: PMMode -> IExpr -> IExpr -> [IMatchClause] -> IExpr
IMatcherExpr :: [IPatternDef] -> IExpr
IQuoteExpr :: IExpr -> IExpr
IQuoteSymbolExpr :: IExpr -> IExpr
IWedgeApplyExpr :: IExpr -> [IExpr] -> IExpr
IDoExpr :: [IBindingExpr] -> IExpr -> IExpr
ISeqExpr :: IExpr -> IExpr -> IExpr
IApplyExpr :: IExpr -> [IExpr] -> IExpr
ICApplyExpr :: IExpr -> IExpr -> IExpr
IGenerateTensorExpr :: IExpr -> IExpr -> IExpr
ITensorExpr :: IExpr -> IExpr -> IExpr
ITensorContractExpr :: IExpr -> IExpr
ITensorMapExpr :: IExpr -> IExpr -> IExpr
ITensorMap2Expr :: IExpr -> IExpr -> IExpr -> IExpr
ITransposeExpr :: IExpr -> IExpr -> IExpr
IFlipIndicesExpr :: IExpr -> IExpr
IFunctionExpr :: [String] -> IExpr
data IPattern
IWildCard :: IPattern
IPatVar :: String -> IPattern
IValuePat :: IExpr -> IPattern
IPredPat :: IExpr -> IPattern
IIndexedPat :: IPattern -> [IExpr] -> IPattern
ILetPat :: [IBindingExpr] -> IPattern -> IPattern
INotPat :: IPattern -> IPattern
IAndPat :: IPattern -> IPattern -> IPattern
IOrPat :: IPattern -> IPattern -> IPattern
IForallPat :: IPattern -> IPattern -> IPattern
ITuplePat :: [IPattern] -> IPattern
IInductivePat :: String -> [IPattern] -> IPattern
ILoopPat :: String -> ILoopRange -> IPattern -> IPattern -> IPattern
IContPat :: IPattern
IPApplyPat :: IExpr -> [IPattern] -> IPattern
IVarPat :: String -> IPattern
IInductiveOrPApplyPat :: String -> [IPattern] -> IPattern
ISeqNilPat :: IPattern
ISeqConsPat :: IPattern -> IPattern -> IPattern
ILaterPatVar :: IPattern
IDApplyPat :: IPattern -> [IPattern] -> IPattern
data ILoopRange
ILoopRange :: IExpr -> IExpr -> IPattern -> ILoopRange
type IBindingExpr = (IPrimitiveDataPattern, IExpr)
type IMatchClause = (IPattern, IExpr)
type IPatternDef = (PrimitivePatPattern, IExpr, [(IPrimitiveDataPattern, IExpr)])
type IPrimitiveDataPattern = PDPatternBase Var
data Var
Var :: String -> [Index (Maybe Var)] -> Var
stringToVar :: String -> Var
extractNameFromVar :: Var -> String
data Index a
Sub :: a -> Index a
Sup :: a -> Index a
MultiSub :: a -> Integer -> a -> Index a
MultiSup :: a -> Integer -> a -> Index a
SupSub :: a -> Index a
User :: a -> Index a
DF :: Integer -> Integer -> Index a
extractSupOrSubIndex :: Index a -> Maybe a
extractIndex :: Index a -> a
makeIApply :: String -> [IExpr] -> IExpr
data ConstantExpr
CharExpr :: Char -> ConstantExpr
StringExpr :: Text -> ConstantExpr
BoolExpr :: Bool -> ConstantExpr
IntegerExpr :: Integer -> ConstantExpr
FloatExpr :: Double -> ConstantExpr
SomethingExpr :: ConstantExpr
UndefinedExpr :: ConstantExpr
data PMMode
BFSMode :: PMMode
DFSMode :: PMMode
data PrimitivePatPattern
PPWildCard :: PrimitivePatPattern
PPPatVar :: PrimitivePatPattern
PPValuePat :: String -> PrimitivePatPattern
PPInductivePat :: String -> [PrimitivePatPattern] -> PrimitivePatPattern
PPTuplePat :: [PrimitivePatPattern] -> PrimitivePatPattern
data PDPatternBase var
PDWildCard :: PDPatternBase var
PDPatVar :: var -> PDPatternBase var
PDInductivePat :: String -> [PDPatternBase var] -> PDPatternBase var
PDTuplePat :: [PDPatternBase var] -> PDPatternBase var
PDEmptyPat :: PDPatternBase var
PDConsPat :: PDPatternBase var -> PDPatternBase var -> PDPatternBase var
PDSnocPat :: PDPatternBase var -> PDPatternBase var -> PDPatternBase var
PDConstantPat :: ConstantExpr -> PDPatternBase var
instance Data.Traversable.Traversable Language.Egison.IExpr.Index
instance GHC.Generics.Generic (Language.Egison.IExpr.Index a)
instance Data.Foldable.Foldable Language.Egison.IExpr.Index
instance GHC.Base.Functor Language.Egison.IExpr.Index
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Egison.IExpr.Index a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.IExpr.Index a)
instance GHC.Show.Show Language.Egison.IExpr.Var
instance GHC.Generics.Generic Language.Egison.IExpr.Var
instance GHC.Show.Show Language.Egison.IExpr.ILoopRange
instance GHC.Show.Show Language.Egison.IExpr.IPattern
instance GHC.Show.Show Language.Egison.IExpr.IExpr
instance GHC.Show.Show Language.Egison.IExpr.ITopExpr
instance GHC.Show.Show Language.Egison.IExpr.Var'
instance GHC.Generics.Generic Language.Egison.IExpr.Var'
instance GHC.Classes.Eq Language.Egison.IExpr.Var'
instance GHC.Classes.Eq Language.Egison.IExpr.Var
instance Data.Hashable.Class.Hashable Language.Egison.IExpr.Var'
instance Data.Hashable.Class.Hashable Language.Egison.IExpr.Var
instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Language.Egison.IExpr.Index a)
instance GHC.Show.Show (Language.Egison.IExpr.Index GHC.Base.String)
-- | This module defines the state during the evaluation.
module Language.Egison.EvalState
newtype EvalState
EvalState :: [Var] -> EvalState
[funcNameStack] :: EvalState -> [Var]
initialEvalState :: EvalState
class (Applicative m, Monad m) => MonadEval m
pushFuncName :: MonadEval m => Var -> m ()
topFuncName :: MonadEval m => m Var
popFuncName :: MonadEval m => m ()
getFuncNameStack :: MonadEval m => m [Var]
mLabelFuncName :: MonadEval m => Maybe Var -> m a -> m a
instance GHC.Base.Monad m => Language.Egison.EvalState.MonadEval (Control.Monad.Trans.State.Strict.StateT Language.Egison.EvalState.EvalState m)
instance Language.Egison.EvalState.MonadEval m => Language.Egison.EvalState.MonadEval (Control.Monad.Trans.Except.ExceptT e m)
-- | This module provides definition and utility functions for monadic
-- list.
module Language.Egison.MList
data MList m a
MNil :: MList m a
MCons :: a -> m (MList m a) -> MList m a
fromList :: Monad m => [a] -> MList m a
fromSeq :: Monad m => Seq a -> MList m a
fromMList :: Monad m => MList m a -> m [a]
msingleton :: Monad m => a -> MList m a
mfoldr :: Monad m => (a -> m b -> m b) -> m b -> MList m a -> m b
mappend :: Monad m => MList m a -> m (MList m a) -> m (MList m a)
mconcat :: Monad m => MList m (MList m a) -> m (MList m a)
mmap :: Monad m => (a -> m b) -> MList m a -> m (MList m b)
mfor :: Monad m => MList m a -> (a -> m b) -> m (MList m b)
mAny :: Monad m => (a -> m Bool) -> MList m a -> m Bool
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.MList.MList m a)
-- | This module defines the internal representation of mathematic objects
-- such as polynominals, and some useful patterns.
module Language.Egison.Math.Expr
data ScalarData
Div :: PolyExpr -> PolyExpr -> ScalarData
newtype PolyExpr
Plus :: [TermExpr] -> PolyExpr
data TermExpr
Term :: Integer -> Monomial -> TermExpr
type Monomial = [(SymbolExpr, Integer)]
data SymbolExpr
Symbol :: Id -> String -> [Index ScalarData] -> SymbolExpr
Apply :: ScalarData -> [ScalarData] -> SymbolExpr
Quote :: ScalarData -> SymbolExpr
FunctionData :: ScalarData -> [ScalarData] -> [ScalarData] -> SymbolExpr
class Printable a
isAtom :: Printable a => a -> Bool
pretty :: Printable a => a -> String
pattern ZeroExpr :: ScalarData
pattern SingleSymbol :: SymbolExpr -> ScalarData
pattern SingleTerm :: Integer -> Monomial -> ScalarData
data ScalarM
ScalarM :: ScalarM
data TermM
TermM :: TermM
data SymbolM
SymbolM :: SymbolM
term :: Pattern (PP Integer, PP Monomial) TermM TermExpr (Integer, Monomial)
termM :: TermM -> TermExpr -> (Eql, Multiset (Pair SymbolM Eql))
symbol :: Pattern (PP String) SymbolM SymbolExpr String
symbolM :: SymbolM -> p -> Eql
func :: Pattern (PP ScalarData, PP [ScalarData]) SymbolM SymbolExpr (ScalarData, [ScalarData])
funcM :: SymbolM -> SymbolExpr -> (ScalarM, List ScalarM)
apply :: Pattern (PP String, PP [ScalarData]) SymbolM SymbolExpr (String, [ScalarData])
applyM :: SymbolM -> p -> (Eql, List ScalarM)
quote :: Pattern (PP ScalarData) SymbolM SymbolExpr ScalarData
negQuote :: Pattern (PP ScalarData) SymbolM SymbolExpr ScalarData
negQuoteM :: SymbolM -> p -> ScalarM
equalMonomial :: Pattern (PP Integer, PP Monomial) (Multiset (Pair SymbolM Eql)) Monomial (Integer, Monomial)
equalMonomialM :: Multiset (Pair SymbolM Eql) -> p -> (Eql, Multiset (Pair SymbolM Eql))
zero :: Pattern () ScalarM ScalarData ()
zeroM :: ScalarM -> p -> ()
singleTerm :: Pattern (PP Integer, PP Integer, PP Monomial) ScalarM ScalarData (Integer, Integer, Monomial)
singleTermM :: ScalarM -> p -> (Eql, Eql, Multiset (Pair SymbolM Eql))
mathScalarMult :: Integer -> ScalarData -> ScalarData
mathNegate :: ScalarData -> ScalarData
instance GHC.Classes.Eq Language.Egison.Math.Expr.ScalarData
instance GHC.Classes.Eq Language.Egison.Math.Expr.SymbolExpr
instance Language.Egison.Math.Expr.Printable Language.Egison.Math.Expr.ScalarData
instance Language.Egison.Math.Expr.Printable Language.Egison.Math.Expr.PolyExpr
instance Language.Egison.Math.Expr.Printable Language.Egison.Math.Expr.SymbolExpr
instance Language.Egison.Math.Expr.Printable Language.Egison.Math.Expr.TermExpr
instance GHC.Show.Show Language.Egison.Math.Expr.ScalarData
instance GHC.Show.Show Language.Egison.Math.Expr.PolyExpr
instance GHC.Show.Show Language.Egison.Math.Expr.TermExpr
instance GHC.Show.Show Language.Egison.Math.Expr.SymbolExpr
instance Control.Egison.Matcher.Matcher Language.Egison.Math.Expr.SymbolM Language.Egison.Math.Expr.SymbolExpr
instance Control.Egison.Matcher.ValuePattern Language.Egison.Math.Expr.SymbolM Language.Egison.Math.Expr.SymbolExpr
instance Control.Egison.Matcher.Matcher Language.Egison.Math.Expr.TermM Language.Egison.Math.Expr.TermExpr
instance Control.Egison.Matcher.Matcher Language.Egison.Math.Expr.ScalarM Language.Egison.Math.Expr.ScalarData
instance Control.Egison.Matcher.ValuePattern Language.Egison.Math.Expr.ScalarM Language.Egison.Math.Expr.ScalarData
instance GHC.Classes.Eq Language.Egison.Math.Expr.PolyExpr
instance GHC.Classes.Eq Language.Egison.Math.Expr.TermExpr
instance GHC.Show.Show (Language.Egison.IExpr.Index Language.Egison.Math.Expr.ScalarData)
-- | This module implements the normalization of polynomials. Normalization
-- rules for particular mathematical functions (such as sqrt and sin/cos)
-- are defined in Rewrite.hs.
module Language.Egison.Math.Normalize
mathNormalize' :: ScalarData -> ScalarData
termsGcd :: [TermExpr] -> TermExpr
mathDivideTerm :: TermExpr -> TermExpr -> TermExpr
-- | This module defines some basic arithmetic operations for Egison's
-- computer algebra system.
module Language.Egison.Math.Arith
mathPlus :: ScalarData -> ScalarData -> ScalarData
mathMinus :: ScalarData -> ScalarData -> ScalarData
mathMult :: ScalarData -> ScalarData -> ScalarData
mathDiv :: ScalarData -> ScalarData -> ScalarData
mathPower :: ScalarData -> Integer -> ScalarData
mathNumerator :: ScalarData -> ScalarData
mathDenominator :: ScalarData -> ScalarData
-- | This module implements rewrite rules for common mathematical
-- functions.
module Language.Egison.Math.Rewrite
rewriteSymbol :: ScalarData -> ScalarData
-- | This module provides the interface of Egison's computer algebra
-- system.
module Language.Egison.Math
data ScalarData
Div :: PolyExpr -> PolyExpr -> ScalarData
newtype PolyExpr
Plus :: [TermExpr] -> PolyExpr
data TermExpr
Term :: Integer -> Monomial -> TermExpr
type Monomial = [(SymbolExpr, Integer)]
data SymbolExpr
Symbol :: Id -> String -> [Index ScalarData] -> SymbolExpr
Apply :: ScalarData -> [ScalarData] -> SymbolExpr
Quote :: ScalarData -> SymbolExpr
FunctionData :: ScalarData -> [ScalarData] -> [ScalarData] -> SymbolExpr
class Printable a
isAtom :: Printable a => a -> Bool
pretty :: Printable a => a -> String
pattern ZeroExpr :: ScalarData
pattern SingleSymbol :: SymbolExpr -> ScalarData
pattern SingleTerm :: Integer -> Monomial -> ScalarData
mathNormalize' :: ScalarData -> ScalarData
rewriteSymbol :: ScalarData -> ScalarData
mathPlus :: ScalarData -> ScalarData -> ScalarData
mathMult :: ScalarData -> ScalarData -> ScalarData
mathDiv :: ScalarData -> ScalarData -> ScalarData
mathNumerator :: ScalarData -> ScalarData
mathDenominator :: ScalarData -> ScalarData
mathNegate :: ScalarData -> ScalarData
-- | This module implements the parser for the old S-expression syntax.
module Language.Egison.Parser.SExpr
parseTopExprs :: String -> Either String [TopExpr]
parseTopExpr :: String -> Either String TopExpr
parseExprs :: String -> Either String [Expr]
parseExpr :: String -> Either String Expr
-- | This module defines runtime state.
module Language.Egison.RState
data RState
RState :: Int -> [Op] -> [Op] -> RState
[indexCounter] :: RState -> Int
[exprOps] :: RState -> [Op]
[patternOps] :: RState -> [Op]
type RuntimeT m = ReaderT EgisonOpts (StateT RState m)
type RuntimeM = RuntimeT IO
class (Applicative m, Monad m) => MonadRuntime m
fresh :: MonadRuntime m => m String
runRuntimeT :: Monad m => EgisonOpts -> RuntimeT m a -> m (a, RState)
evalRuntimeT :: Monad m => EgisonOpts -> RuntimeT m a -> m a
instance GHC.Base.Monad m => Language.Egison.RState.MonadRuntime (Language.Egison.RState.RuntimeT m)
-- | This module provides the parser for the new syntax.
module Language.Egison.Parser.NonS
parseTopExprs :: String -> RuntimeM (Either String [TopExpr])
parseTopExpr :: String -> RuntimeM (Either String TopExpr)
parseExprs :: String -> RuntimeM (Either String [Expr])
parseExpr :: String -> RuntimeM (Either String Expr)
upperReservedWords :: [String]
lowerReservedWords :: [String]
instance GHC.Classes.Ord Language.Egison.Parser.NonS.CustomError
instance GHC.Classes.Eq Language.Egison.Parser.NonS.CustomError
instance Text.Megaparsec.Error.ShowErrorComponent Language.Egison.Parser.NonS.CustomError
-- | This module contains definitions for Egison internal data.
module Language.Egison.Data
data EgisonValue
World :: EgisonValue
Char :: Char -> EgisonValue
String :: Text -> EgisonValue
Bool :: Bool -> EgisonValue
ScalarData :: ScalarData -> EgisonValue
TensorData :: Tensor EgisonValue -> EgisonValue
Float :: Double -> EgisonValue
InductiveData :: String -> [EgisonValue] -> EgisonValue
Tuple :: [EgisonValue] -> EgisonValue
Collection :: Seq EgisonValue -> EgisonValue
IntHash :: HashMap Integer EgisonValue -> EgisonValue
CharHash :: HashMap Char EgisonValue -> EgisonValue
StrHash :: HashMap Text EgisonValue -> EgisonValue
UserMatcher :: Env -> [IPatternDef] -> EgisonValue
Func :: Maybe Var -> Env -> [Var] -> IExpr -> EgisonValue
CFunc :: Env -> String -> IExpr -> EgisonValue
MemoizedFunc :: IORef (HashMap [Integer] WHNFData) -> Env -> [String] -> IExpr -> EgisonValue
PatternFunc :: Env -> [String] -> IPattern -> EgisonValue
PrimitiveFunc :: PrimitiveFunc -> EgisonValue
LazyPrimitiveFunc :: LazyPrimitiveFunc -> EgisonValue
IOFunc :: EvalM WHNFData -> EgisonValue
Port :: Handle -> EgisonValue
RefBox :: IORef EgisonValue -> EgisonValue
Something :: EgisonValue
Undefined :: EgisonValue
type Matcher = EgisonValue
type PrimitiveFunc = [EgisonValue] -> EvalM EgisonValue
type LazyPrimitiveFunc = [WHNFData] -> EvalM WHNFData
data EgisonHashKey
IntKey :: Integer -> EgisonHashKey
CharKey :: Char -> EgisonHashKey
StrKey :: Text -> EgisonHashKey
class EgisonData a
toEgison :: EgisonData a => a -> EgisonValue
fromEgison :: EgisonData a => EgisonValue -> EvalM a
data Tensor a
Tensor :: Shape -> Vector a -> [Index EgisonValue] -> Tensor a
Scalar :: a -> Tensor a
type Shape = [Integer]
symbolScalarData :: String -> String -> EgisonValue
symbolScalarData' :: String -> ScalarData
getSymId :: EgisonValue -> String
getSymName :: EgisonValue -> String
mathExprToEgison :: ScalarData -> EgisonValue
egisonToScalarData :: EgisonValue -> EvalM ScalarData
extractScalar :: EgisonValue -> EvalM ScalarData
data Object
Thunk :: EvalM WHNFData -> Object
WHNF :: WHNFData -> Object
-- | For memoization
type ObjectRef = IORef Object
data WHNFData
Value :: EgisonValue -> WHNFData
IInductiveData :: String -> [ObjectRef] -> WHNFData
ITuple :: [ObjectRef] -> WHNFData
ICollection :: IORef (Seq Inner) -> WHNFData
IIntHash :: HashMap Integer ObjectRef -> WHNFData
ICharHash :: HashMap Char ObjectRef -> WHNFData
IStrHash :: HashMap Text ObjectRef -> WHNFData
ITensor :: Tensor ObjectRef -> WHNFData
data Inner
IElement :: ObjectRef -> Inner
ISubCollection :: ObjectRef -> Inner
data Env
Env :: [HashMap Var ObjectRef] -> Maybe (String, [Index (Maybe ScalarData)]) -> Env
type Binding = (Var, ObjectRef)
nullEnv :: Env
extendEnv :: Env -> [Binding] -> Env
refVar :: Env -> Var -> Maybe ObjectRef
data EgisonError
UnboundVariable :: String -> CallStack -> EgisonError
TypeMismatch :: String -> WHNFData -> CallStack -> EgisonError
ArgumentsNumPrimitive :: String -> Int -> Int -> CallStack -> EgisonError
TupleLength :: Int -> Int -> CallStack -> EgisonError
InconsistentTensorShape :: CallStack -> EgisonError
InconsistentTensorIndex :: CallStack -> EgisonError
TensorIndexOutOfBounds :: Integer -> Integer -> CallStack -> EgisonError
NotImplemented :: String -> CallStack -> EgisonError
Assertion :: String -> CallStack -> EgisonError
Parser :: String -> EgisonError
EgisonBug :: String -> CallStack -> EgisonError
MatchFailure :: CallStack -> EgisonError
PrimitiveMatchFailure :: CallStack -> EgisonError
Default :: String -> EgisonError
throwErrorWithTrace :: (CallStack -> EgisonError) -> EvalM a
type EvalM = EvalT RuntimeM
fromEvalM :: EgisonOpts -> EvalM a -> IO (Either EgisonError a)
fromEvalT :: EvalM a -> RuntimeM (Either EgisonError a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.Data.Tensor a)
instance Language.Egison.Data.EgisonData GHC.Types.Char
instance Language.Egison.Data.EgisonData Data.Text.Internal.Text
instance Language.Egison.Data.EgisonData GHC.Types.Bool
instance Language.Egison.Data.EgisonData GHC.Integer.Type.Integer
instance Language.Egison.Data.EgisonData GHC.Real.Rational
instance Language.Egison.Data.EgisonData GHC.Types.Double
instance Language.Egison.Data.EgisonData GHC.IO.Handle.Types.Handle
instance Language.Egison.Data.EgisonData a => Language.Egison.Data.EgisonData [a]
instance Language.Egison.Data.EgisonData ()
instance (Language.Egison.Data.EgisonData a, Language.Egison.Data.EgisonData b) => Language.Egison.Data.EgisonData (a, b)
instance (Language.Egison.Data.EgisonData a, Language.Egison.Data.EgisonData b, Language.Egison.Data.EgisonData c) => Language.Egison.Data.EgisonData (a, b, c)
instance (Language.Egison.Data.EgisonData a, Language.Egison.Data.EgisonData b, Language.Egison.Data.EgisonData c, Language.Egison.Data.EgisonData d) => Language.Egison.Data.EgisonData (a, b, c, d)
instance Language.Egison.Data.EgisonData (GHC.IORef.IORef Language.Egison.Data.EgisonValue)
instance GHC.Show.Show Language.Egison.Data.EgisonValue
instance GHC.Classes.Eq Language.Egison.Data.EgisonValue
instance GHC.Show.Show Language.Egison.Data.WHNFData
instance GHC.Show.Show Language.Egison.Data.Object
instance GHC.Show.Show Language.Egison.Data.ObjectRef
instance GHC.Show.Show (Language.Egison.IExpr.Index Language.Egison.Data.EgisonValue)
instance GHC.Show.Show Language.Egison.Data.EgisonError
instance GHC.Exception.Type.Exception Language.Egison.Data.EgisonError
instance Language.Egison.RState.MonadRuntime Language.Egison.Data.EvalM
module Language.Egison.PrettyMath.AST
data MathExpr
Atom :: String -> [MathIndex] -> MathExpr
NegativeAtom :: String -> MathExpr
Plus :: [MathExpr] -> MathExpr
Multiply :: [MathExpr] -> MathExpr
Div :: MathExpr -> MathExpr -> MathExpr
Power :: MathExpr -> MathExpr -> MathExpr
Func :: MathExpr -> [MathExpr] -> MathExpr
Tensor :: [MathExpr] -> [MathIndex] -> MathExpr
Tuple :: [MathExpr] -> MathExpr
Collection :: [MathExpr] -> MathExpr
Quote :: MathExpr -> MathExpr
Partial :: MathExpr -> [MathExpr] -> MathExpr
data MathIndex
Super :: MathExpr -> MathIndex
Sub :: MathExpr -> MathIndex
class ToMathExpr a
toMathExpr :: ToMathExpr a => a -> MathExpr
isSub :: MathIndex -> Bool
parseExpr :: Parser MathExpr
instance GHC.Show.Show Language.Egison.PrettyMath.AST.MathExpr
instance GHC.Classes.Eq Language.Egison.PrettyMath.AST.MathExpr
instance GHC.Show.Show Language.Egison.PrettyMath.AST.MathIndex
instance GHC.Classes.Eq Language.Egison.PrettyMath.AST.MathIndex
instance Language.Egison.PrettyMath.AST.ToMathExpr Language.Egison.Data.EgisonValue
instance Language.Egison.PrettyMath.AST.ToMathExpr a => Language.Egison.PrettyMath.AST.ToMathExpr (Language.Egison.Data.Tensor a)
instance Language.Egison.PrettyMath.AST.ToMathExpr Language.Egison.Math.Expr.ScalarData
instance Language.Egison.PrettyMath.AST.ToMathExpr Language.Egison.Math.Expr.PolyExpr
instance Language.Egison.PrettyMath.AST.ToMathExpr Language.Egison.Math.Expr.TermExpr
instance Language.Egison.PrettyMath.AST.ToMathExpr GHC.Integer.Type.Integer
instance Language.Egison.PrettyMath.AST.ToMathExpr (Language.Egison.Math.Expr.SymbolExpr, GHC.Integer.Type.Integer)
instance Language.Egison.PrettyMath.AST.ToMathExpr Language.Egison.Math.Expr.SymbolExpr
module Language.Egison.PrettyMath.Maxima
showMathExpr :: MathExpr -> String
module Language.Egison.PrettyMath.Mathematica
showMathExpr :: MathExpr -> String
module Language.Egison.PrettyMath.Latex
showMathExpr :: MathExpr -> String
module Language.Egison.PrettyMath.AsciiMath
showMathExpr :: MathExpr -> String
-- | This module contains pretty printing for Egison syntax
module Language.Egison.Pretty
prettyTopExprs :: [TopExpr] -> Doc [TopExpr]
prettyStr :: Pretty a => a -> String
showTSV :: EgisonValue -> String
instance Prettyprinter.Internal.Pretty Language.Egison.AST.Expr
instance (Prettyprinter.Internal.Pretty a, Language.Egison.Pretty.Complex a) => Prettyprinter.Internal.Pretty (Language.Egison.AST.Arg a)
instance (Prettyprinter.Internal.Pretty a, Language.Egison.Pretty.Complex a) => Prettyprinter.Internal.Pretty (Language.Egison.AST.IndexExpr a)
instance Language.Egison.Pretty.Complex Language.Egison.IExpr.IExpr
instance Language.Egison.Pretty.Complex Language.Egison.AST.Expr
instance Language.Egison.Pretty.Complex a => Language.Egison.Pretty.Complex (Language.Egison.AST.Arg a)
instance Language.Egison.Pretty.Complex Language.Egison.AST.ArgPattern
instance Language.Egison.Pretty.Complex Language.Egison.AST.Pattern
instance Language.Egison.Pretty.Complex Language.Egison.AST.PrimitiveDataPattern
instance Prettyprinter.Internal.Pretty Language.Egison.AST.TopExpr
instance Prettyprinter.Internal.Pretty Language.Egison.AST.ConstantExpr
instance Prettyprinter.Internal.Pretty Language.Egison.AST.ArgPattern
instance Prettyprinter.Internal.Pretty Language.Egison.AST.VarWithIndices
instance Prettyprinter.Internal.Pretty Language.Egison.AST.VarIndex
instance Prettyprinter.Internal.Pretty Language.Egison.AST.BindingExpr
instance Prettyprinter.Internal.Pretty Language.Egison.AST.MatchClause
instance Prettyprinter.Internal.Pretty (Language.Egison.AST.IndexExpr GHC.Base.String)
instance Prettyprinter.Internal.Pretty Language.Egison.AST.Pattern
instance Prettyprinter.Internal.Pretty Language.Egison.AST.LoopRange
instance Prettyprinter.Internal.Pretty Language.Egison.AST.PrimitivePatPattern
instance Prettyprinter.Internal.Pretty Language.Egison.AST.PrimitiveDataPattern
instance Prettyprinter.Internal.Pretty Language.Egison.AST.Op
instance Prettyprinter.Internal.Pretty Language.Egison.IExpr.IExpr
-- | This module provides translation from mathematical Egison expression
-- into other languages / format of other computer algebra systems.
module Language.Egison.MathOutput
prettyMath :: String -> EgisonValue -> String
-- | This module defines some data types Egison pattern matching.
module Language.Egison.Match
type Match = [Binding]
data MatchingTree
MAtom :: IPattern -> WHNFData -> Matcher -> MatchingTree
MNode :: [PatternBinding] -> MatchingState -> MatchingTree
data MatchingState
MState :: Env -> [LoopPatContext] -> [SeqPatContext] -> [Binding] -> [MatchingTree] -> MatchingState
[mStateEnv] :: MatchingState -> Env
[loopPatCtx] :: MatchingState -> [LoopPatContext]
[seqPatCtx] :: MatchingState -> [SeqPatContext]
[mStateBindings] :: MatchingState -> [Binding]
[mTrees] :: MatchingState -> [MatchingTree]
type PatternBinding = (String, IPattern)
data LoopPatContext
LoopPatContext :: (String, ObjectRef) -> ObjectRef -> IPattern -> IPattern -> IPattern -> LoopPatContext
data SeqPatContext
SeqPatContext :: [MatchingTree] -> IPattern -> [Matcher] -> [WHNFData] -> SeqPatContext
ForallPatContext :: [Matcher] -> [WHNFData] -> SeqPatContext
nullMState :: MatchingState -> Bool
type MatchM = MaybeT EvalM
matchFail :: MatchM a
instance GHC.Show.Show Language.Egison.Match.MatchingTree
instance GHC.Show.Show Language.Egison.Match.MatchingState
-- | This module provides desugar functions.
module Language.Egison.Desugar
desugarTopExpr :: TopExpr -> EvalM (Maybe ITopExpr)
desugarTopExprs :: [TopExpr] -> EvalM [ITopExpr]
desugarExpr :: Expr -> EvalM IExpr
-- | This module provides some helper functions for handling Egison data.
module Language.Egison.Data.Utils
evalRef :: ObjectRef -> EvalM WHNFData
evalObj :: Object -> EvalM WHNFData
writeObjectRef :: ObjectRef -> WHNFData -> EvalM ()
newEvaluatedObjectRef :: WHNFData -> EvalM ObjectRef
tupleToRefs :: WHNFData -> EvalM [ObjectRef]
tupleToListWHNF :: WHNFData -> EvalM [WHNFData]
tupleToList :: EgisonValue -> [EgisonValue]
makeTuple :: [EgisonValue] -> EgisonValue
makeITuple :: [WHNFData] -> EvalM WHNFData
pmIndices :: [Index (Maybe Var)] -> [Index EgisonValue] -> EvalM [Binding]
updateHash :: [Integer] -> WHNFData -> WHNFData -> EvalM WHNFData
-- | This module provides some helper functions that operates on / returns
-- collections.
module Language.Egison.Data.Collection
expandCollection :: WHNFData -> EvalM (Seq Inner)
isEmptyCollection :: WHNFData -> EvalM Bool
unconsCollection :: WHNFData -> MatchM (ObjectRef, ObjectRef)
unsnocCollection :: WHNFData -> MatchM (ObjectRef, ObjectRef)
collectionToRefs :: WHNFData -> EvalM (MList EvalM ObjectRef)
collectionToList :: EgisonValue -> EvalM [EgisonValue]
makeICollection :: [WHNFData] -> EvalM WHNFData
-- | This module provides command-line completion.
module Language.Egison.Completion
-- | Complete Egison keywords
completeEgison :: Monad m => Env -> CompletionFunc m
-- | This module contains functions for tensors.
module Language.Egison.Tensor
class TensorComponent a b | a -> b
fromTensor :: TensorComponent a b => Tensor b -> EvalM a
toTensor :: TensorComponent a b => a -> EvalM (Tensor b)
tref :: [Index EgisonValue] -> Tensor a -> EvalM (Tensor a)
enumTensorIndices :: Shape -> [[Integer]]
tTranspose :: [Index EgisonValue] -> Tensor a -> EvalM (Tensor a)
tTranspose' :: [EgisonValue] -> Tensor a -> EvalM (Tensor a)
tFlipIndices :: Tensor a -> EvalM (Tensor a)
appendDF :: Integer -> WHNFData -> WHNFData
removeDF :: WHNFData -> EvalM WHNFData
tMap :: (a -> EvalM b) -> Tensor a -> EvalM (Tensor b)
tMap2 :: (a -> b -> EvalM c) -> Tensor a -> Tensor b -> EvalM (Tensor c)
tProduct :: (a -> b -> EvalM c) -> Tensor a -> Tensor b -> EvalM (Tensor c)
tContract :: Tensor a -> EvalM [Tensor a]
tContract' :: Tensor a -> EvalM (Tensor a)
tConcat' :: [Tensor a] -> EvalM (Tensor a)
instance Language.Egison.Tensor.TensorComponent Language.Egison.Data.EgisonValue Language.Egison.Data.EgisonValue
instance Language.Egison.Tensor.TensorComponent Language.Egison.Data.WHNFData Language.Egison.Data.ObjectRef
instance Control.Egison.Matcher.Matcher m a => Control.Egison.Matcher.Matcher (Language.Egison.Tensor.IndexM m) (Language.Egison.IExpr.Index a)
module Language.Egison.Primitives.Utils
noArg :: EvalM EgisonValue -> String -> PrimitiveFunc
oneArg :: (EgisonValue -> EvalM EgisonValue) -> String -> PrimitiveFunc
oneArg' :: (EgisonValue -> EvalM EgisonValue) -> String -> PrimitiveFunc
twoArgs :: (EgisonValue -> EgisonValue -> EvalM EgisonValue) -> String -> PrimitiveFunc
twoArgs' :: (EgisonValue -> EgisonValue -> EvalM EgisonValue) -> String -> PrimitiveFunc
threeArgs' :: (EgisonValue -> EgisonValue -> EgisonValue -> EvalM EgisonValue) -> String -> PrimitiveFunc
lazyOneArg :: (WHNFData -> EvalM WHNFData) -> String -> LazyPrimitiveFunc
unaryOp :: (EgisonData a, EgisonData b) => (a -> b) -> String -> PrimitiveFunc
binaryOp :: (EgisonData a, EgisonData b) => (a -> a -> b) -> String -> PrimitiveFunc
-- | This module implements primitive functions that dynamically checks the
-- types of objects.
module Language.Egison.Primitives.Types
primitiveTypeFunctions :: [(String, EgisonValue)]
-- | This module implements arithmetic primitive functions.
module Language.Egison.Primitives.Arith
primitiveArithFunctions :: [(String, EgisonValue)]
-- | This module provides functions to evaluate various objects.
module Language.Egison.Core
evalExprShallow :: Env -> IExpr -> EvalM WHNFData
evalExprDeep :: Env -> IExpr -> EvalM EgisonValue
evalWHNF :: WHNFData -> EvalM EgisonValue
recursiveBind :: Env -> [(Var, IExpr)] -> EvalM Env
patternMatch :: PMMode -> Env -> IPattern -> WHNFData -> Matcher -> EvalM (MList EvalM Match)
-- | This module implements primitive functions that performs IO
-- operations.
module Language.Egison.Primitives.IO
ioPrimitives :: [(String, EgisonValue)]
-- | This module provides the parser interface.
module Language.Egison.Parser
readTopExprs :: String -> EvalM [TopExpr]
readTopExpr :: String -> EvalM TopExpr
readExprs :: String -> EvalM [Expr]
readExpr :: String -> EvalM Expr
parseTopExpr :: String -> RuntimeM (Either String TopExpr)
-- | Load a libary file
loadLibraryFile :: FilePath -> EvalM [TopExpr]
-- | Load a file
loadFile :: FilePath -> EvalM [TopExpr]
removeShebang :: Bool -> String -> String
readUTF8File :: FilePath -> IO String
-- | This module provides interface for evaluating Egison expressions.
module Language.Egison.Eval
-- | Evaluate an Egison expression.
evalExpr :: Env -> Expr -> EvalM EgisonValue
-- | Evaluate an Egison top expression.
evalTopExpr :: Env -> TopExpr -> EvalM (Maybe EgisonValue, Env)
-- | Evaluate an Egison top expression.
evalTopExprStr :: Env -> TopExpr -> EvalM (Maybe String, Env)
-- | Evaluate Egison top expressions.
evalTopExprs :: Env -> [TopExpr] -> EvalM Env
-- | Evaluate Egison top expressions.
evalTopExprsNoPrint :: Env -> [TopExpr] -> EvalM Env
-- | Evaluate an Egison expression. Input is a Haskell string.
runExpr :: Env -> String -> EvalM EgisonValue
-- | Evaluate an Egison top expression. Input is a Haskell string.
runTopExpr :: Env -> String -> EvalM (Maybe EgisonValue, Env)
-- | Evaluate an Egison top expression. Input is a Haskell string.
runTopExprStr :: Env -> String -> EvalM (Maybe String, Env)
-- | Evaluate Egison top expressions. Input is a Haskell string.
runTopExprs :: Env -> String -> EvalM Env
-- | Load an Egison library.
loadEgisonLibrary :: Env -> FilePath -> EvalM Env
-- | Load an Egison file.
loadEgisonFile :: Env -> FilePath -> EvalM Env
-- | This module implements primitive functions that operates on / returns
-- strings.
module Language.Egison.Primitives.String
primitiveStringFunctions :: [(String, EgisonValue)]
-- | This module provides primitive functions in Egison.
module Language.Egison.Primitives
primitiveEnv :: IO Env
primitiveEnvNoIO :: IO Env
-- | This is the top module of Egison.
module Language.Egison
-- | Environment that contains core libraries
initialEnv :: RuntimeM Env
-- | Version number
version :: Version