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