-- 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 3.7.4
-- | This module contains type definitions of Egison Data.
module Language.Egison.Types
data EgisonTopExpr
Define :: Var -> EgisonExpr -> EgisonTopExpr
Redefine :: Var -> EgisonExpr -> EgisonTopExpr
Test :: EgisonExpr -> EgisonTopExpr
Execute :: EgisonExpr -> EgisonTopExpr
LoadFile :: String -> EgisonTopExpr
Load :: String -> EgisonTopExpr
data EgisonExpr
CharExpr :: Char -> EgisonExpr
StringExpr :: Text -> EgisonExpr
BoolExpr :: Bool -> EgisonExpr
IntegerExpr :: Integer -> EgisonExpr
FloatExpr :: Double -> Double -> EgisonExpr
VarExpr :: String -> EgisonExpr
FreshVarExpr :: EgisonExpr
IndexedExpr :: Bool -> EgisonExpr -> [Index EgisonExpr] -> EgisonExpr
SubrefsExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
SuprefsExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
UserIndexedExpr :: EgisonExpr -> [UserIndex EgisonExpr] -> EgisonExpr
PowerExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
InductiveDataExpr :: String -> [EgisonExpr] -> EgisonExpr
TupleExpr :: [EgisonExpr] -> EgisonExpr
CollectionExpr :: [InnerExpr] -> EgisonExpr
ArrayExpr :: [EgisonExpr] -> EgisonExpr
HashExpr :: [(EgisonExpr, EgisonExpr)] -> EgisonExpr
VectorExpr :: [EgisonExpr] -> EgisonExpr
LambdaExpr :: [Arg] -> EgisonExpr -> EgisonExpr
MemoizedLambdaExpr :: [String] -> EgisonExpr -> EgisonExpr
MemoizeExpr :: [(EgisonExpr, EgisonExpr, EgisonExpr)] -> EgisonExpr -> EgisonExpr
CambdaExpr :: String -> EgisonExpr -> EgisonExpr
ProcedureExpr :: [String] -> EgisonExpr -> EgisonExpr
MacroExpr :: [String] -> EgisonExpr -> EgisonExpr
PatternFunctionExpr :: [String] -> EgisonPattern -> EgisonExpr
IfExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr -> EgisonExpr
LetRecExpr :: [BindingExpr] -> EgisonExpr -> EgisonExpr
LetExpr :: [BindingExpr] -> EgisonExpr -> EgisonExpr
LetStarExpr :: [BindingExpr] -> EgisonExpr -> EgisonExpr
WithSymbolsExpr :: [String] -> EgisonExpr -> EgisonExpr
MatchExpr :: EgisonExpr -> EgisonExpr -> [MatchClause] -> EgisonExpr
MatchAllExpr :: EgisonExpr -> EgisonExpr -> MatchClause -> EgisonExpr
MatchLambdaExpr :: EgisonExpr -> [MatchClause] -> EgisonExpr
MatchAllLambdaExpr :: EgisonExpr -> MatchClause -> EgisonExpr
NextMatchExpr :: EgisonExpr -> EgisonExpr -> [MatchClause] -> EgisonExpr
NextMatchAllExpr :: EgisonExpr -> EgisonExpr -> MatchClause -> EgisonExpr
NextMatchLambdaExpr :: EgisonExpr -> [MatchClause] -> EgisonExpr
NextMatchAllLambdaExpr :: EgisonExpr -> MatchClause -> EgisonExpr
MatcherBFSExpr :: MatcherInfo -> EgisonExpr
MatcherDFSExpr :: MatcherInfo -> EgisonExpr
AlgebraicDataMatcherExpr :: [(String, [EgisonExpr])] -> EgisonExpr
QuoteExpr :: EgisonExpr -> EgisonExpr
QuoteFunctionExpr :: EgisonExpr -> EgisonExpr
WedgeExpr :: EgisonExpr -> EgisonExpr
WedgeApplyExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
DoExpr :: [BindingExpr] -> EgisonExpr -> EgisonExpr
IoExpr :: EgisonExpr -> EgisonExpr
SeqExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
ApplyExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
CApplyExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
PartialExpr :: Integer -> EgisonExpr -> EgisonExpr
PartialVarExpr :: Integer -> EgisonExpr
RecVarExpr :: EgisonExpr
GenerateArrayExpr :: EgisonExpr -> (EgisonExpr, EgisonExpr) -> EgisonExpr
ArrayBoundsExpr :: EgisonExpr -> EgisonExpr
ArrayRefExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
ParExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
PseqExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
PmapExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
GenerateTensorExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
TensorExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr -> EgisonExpr -> EgisonExpr
TensorContractExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
TensorMapExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
TensorMap2Expr :: EgisonExpr -> EgisonExpr -> EgisonExpr -> EgisonExpr
TransposeExpr :: EgisonExpr -> EgisonExpr -> EgisonExpr
SomethingExpr :: EgisonExpr
UndefinedExpr :: EgisonExpr
data EgisonPattern
WildCard :: EgisonPattern
PatVar :: String -> EgisonPattern
ValuePat :: EgisonExpr -> EgisonPattern
PredPat :: EgisonExpr -> EgisonPattern
IndexedPat :: EgisonPattern -> [EgisonExpr] -> EgisonPattern
LetPat :: [BindingExpr] -> EgisonPattern -> EgisonPattern
NotPat :: EgisonPattern -> EgisonPattern
AndPat :: [EgisonPattern] -> EgisonPattern
OrPat :: [EgisonPattern] -> EgisonPattern
OrderedOrPat :: [EgisonPattern] -> EgisonPattern
TuplePat :: [EgisonPattern] -> EgisonPattern
InductivePat :: String -> [EgisonPattern] -> EgisonPattern
LoopPat :: String -> LoopRange -> EgisonPattern -> EgisonPattern -> EgisonPattern
ContPat :: EgisonPattern
PApplyPat :: EgisonExpr -> [EgisonPattern] -> EgisonPattern
VarPat :: String -> EgisonPattern
DApplyPat :: EgisonPattern -> [EgisonPattern] -> EgisonPattern
DivPat :: EgisonPattern -> EgisonPattern -> EgisonPattern
PlusPat :: [EgisonPattern] -> EgisonPattern
MultPat :: [EgisonPattern] -> EgisonPattern
PowerPat :: EgisonPattern -> EgisonPattern -> EgisonPattern
data Arg
ScalarArg :: String -> Arg
TensorArg :: String -> Arg
data Index a
Subscript :: a -> Index a
Superscript :: a -> Index a
SupSubscript :: a -> Index a
DFscript :: Integer -> Integer -> Index a
data UserIndex a
Userscript :: a -> UserIndex a
data InnerExpr
ElementExpr :: EgisonExpr -> InnerExpr
SubCollectionExpr :: EgisonExpr -> InnerExpr
type BindingExpr = ([String], EgisonExpr)
type MatchClause = (EgisonPattern, EgisonExpr)
type MatcherInfo = [(PrimitivePatPattern, EgisonExpr, [(PrimitiveDataPattern, EgisonExpr)])]
data LoopRange
LoopRange :: EgisonExpr -> EgisonExpr -> EgisonPattern -> LoopRange
data PrimitivePatPattern
PPWildCard :: PrimitivePatPattern
PPPatVar :: PrimitivePatPattern
PPValuePat :: String -> PrimitivePatPattern
PPInductivePat :: String -> [PrimitivePatPattern] -> PrimitivePatPattern
data PrimitiveDataPattern
PDWildCard :: PrimitiveDataPattern
PDPatVar :: String -> PrimitiveDataPattern
PDInductivePat :: String -> [PrimitiveDataPattern] -> PrimitiveDataPattern
PDTuplePat :: [PrimitiveDataPattern] -> PrimitiveDataPattern
PDEmptyPat :: PrimitiveDataPattern
PDConsPat :: PrimitiveDataPattern -> PrimitiveDataPattern -> PrimitiveDataPattern
PDSnocPat :: PrimitiveDataPattern -> PrimitiveDataPattern -> PrimitiveDataPattern
PDConstantPat :: EgisonExpr -> PrimitiveDataPattern
type Matcher = EgisonValue
type PrimitiveFunc = WHNFData -> EgisonM WHNFData
class EgisonData a
toEgison :: EgisonData a => a -> EgisonValue
fromEgison :: EgisonData a => EgisonValue -> EgisonM a
showTSV :: EgisonValue -> String
data EgisonValue
World :: EgisonValue
Char :: Char -> EgisonValue
String :: Text -> EgisonValue
Bool :: Bool -> EgisonValue
ScalarData :: ScalarData -> EgisonValue
TensorData :: (Tensor EgisonValue) -> EgisonValue
UserIndexedData :: EgisonValue -> [UserIndex EgisonValue] -> EgisonValue
Float :: Double -> Double -> EgisonValue
InductiveData :: String -> [EgisonValue] -> EgisonValue
Tuple :: [EgisonValue] -> EgisonValue
Collection :: (Seq EgisonValue) -> EgisonValue
Array :: (Array Integer EgisonValue) -> EgisonValue
IntHash :: (HashMap Integer EgisonValue) -> EgisonValue
CharHash :: (HashMap Char EgisonValue) -> EgisonValue
StrHash :: (HashMap Text EgisonValue) -> EgisonValue
UserMatcher :: Env -> PMMode -> MatcherInfo -> EgisonValue
Func :: (Maybe String) -> Env -> [String] -> EgisonExpr -> EgisonValue
PartialFunc :: Env -> Integer -> EgisonExpr -> EgisonValue
CFunc :: (Maybe String) -> Env -> String -> EgisonExpr -> EgisonValue
MemoizedFunc :: (Maybe String) -> ObjectRef -> (IORef (HashMap [Integer] ObjectRef)) -> Env -> [String] -> EgisonExpr -> EgisonValue
Proc :: (Maybe String) -> Env -> [String] -> EgisonExpr -> EgisonValue
Macro :: [String] -> EgisonExpr -> EgisonValue
PatternFunc :: Env -> [String] -> EgisonPattern -> EgisonValue
PrimitiveFunc :: String -> PrimitiveFunc -> EgisonValue
IOFunc :: (EgisonM WHNFData) -> EgisonValue
QuotedFunc :: EgisonValue -> EgisonValue
Port :: Handle -> EgisonValue
Something :: EgisonValue
Undefined :: EgisonValue
EOF :: EgisonValue
data ScalarData
Div :: PolyExpr -> PolyExpr -> ScalarData
data PolyExpr
Plus :: [TermExpr] -> PolyExpr
data TermExpr
Term :: Integer -> [(SymbolExpr, Integer)] -> TermExpr
data SymbolExpr
Symbol :: String -> String -> [Index ScalarData] -> SymbolExpr
Apply :: EgisonValue -> [ScalarData] -> SymbolExpr
Quote :: ScalarData -> SymbolExpr
data Tensor a
Tensor :: [Integer] -> (Vector a) -> [Index EgisonValue] -> Tensor a
Scalar :: a -> Tensor a
class HasTensor a
tensorElems :: HasTensor a => a -> Vector a
tensorSize :: HasTensor a => a -> [Integer]
tensorIndices :: HasTensor a => a -> [Index EgisonValue]
fromTensor :: HasTensor a => (Tensor a) -> EgisonM a
toTensor :: HasTensor a => a -> EgisonM (Tensor a)
undef :: HasTensor a => a
initTensor :: [Integer] -> [a] -> [EgisonValue] -> [EgisonValue] -> (Tensor a)
tSize :: (Tensor a) -> [Integer]
tToList :: (Tensor a) -> [a]
tIndex :: (Tensor a) -> [Index EgisonValue]
tref :: HasTensor a => [Index EgisonValue] -> (Tensor a) -> EgisonM a
enumTensorIndices :: [Integer] -> [[Integer]]
tTranspose' :: HasTensor a => [EgisonValue] -> (Tensor a) -> EgisonM (Tensor a)
appendDFscripts :: Integer -> WHNFData -> EgisonM WHNFData
removeDFscripts :: WHNFData -> EgisonM WHNFData
tMap :: HasTensor a => (a -> EgisonM a) -> (Tensor a) -> EgisonM (Tensor a)
tMap2 :: HasTensor a => (a -> a -> EgisonM a) -> Tensor a -> Tensor a -> EgisonM (Tensor a)
tMapN :: HasTensor a => ([a] -> EgisonM a) -> [Tensor a] -> EgisonM (Tensor a)
tSum :: HasTensor a => (a -> a -> EgisonM a) -> (Tensor a) -> (Tensor a) -> EgisonM (Tensor a)
tProduct :: HasTensor a => (a -> a -> EgisonM a) -> (Tensor a) -> (Tensor a) -> EgisonM (Tensor a)
tContract :: HasTensor a => (Tensor a) -> EgisonM [Tensor a]
tContract' :: HasTensor a => (Tensor a) -> EgisonM (Tensor a)
tConcat :: HasTensor a => Index EgisonValue -> [Tensor a] -> EgisonM (Tensor a)
tConcat' :: HasTensor a => [Tensor a] -> EgisonM (Tensor a)
tClearIndex :: HasTensor a => Tensor a -> Tensor a
tClearIndex' :: [Index EgisonValue] -> [Index EgisonValue]
symbolScalarData :: String -> String -> EgisonValue
mathExprToEgison :: ScalarData -> EgisonValue
egisonToScalarData :: EgisonValue -> EgisonM ScalarData
mathNormalize' :: ScalarData -> ScalarData
mathFold :: ScalarData -> ScalarData
mathSymbolFold :: ScalarData -> ScalarData
mathTermFold :: ScalarData -> ScalarData
mathRemoveZero :: ScalarData -> ScalarData
mathDivide :: ScalarData -> ScalarData
mathPlus :: ScalarData -> ScalarData -> ScalarData
mathMult :: ScalarData -> ScalarData -> ScalarData
mathNegate :: ScalarData -> ScalarData
mathNumerator :: ScalarData -> ScalarData
mathDenominator :: ScalarData -> ScalarData
extractScalar :: EgisonValue -> EgisonM ScalarData
extractScalar' :: WHNFData -> EgisonM ScalarData
data Object
Thunk :: (EgisonM WHNFData) -> Object
WHNF :: WHNFData -> Object
-- | For memoization
type ObjectRef = IORef Object
data WHNFData
Intermediate :: Intermediate -> WHNFData
Value :: EgisonValue -> WHNFData
data Intermediate
IInductiveData :: String -> [ObjectRef] -> Intermediate
ITuple :: [ObjectRef] -> Intermediate
ICollection :: (IORef (Seq Inner)) -> Intermediate
IArray :: (Array Integer ObjectRef) -> Intermediate
IIntHash :: (HashMap Integer ObjectRef) -> Intermediate
ICharHash :: (HashMap Char ObjectRef) -> Intermediate
IStrHash :: (HashMap Text ObjectRef) -> Intermediate
ITensor :: (Tensor WHNFData) -> Intermediate
data Inner
IElement :: ObjectRef -> Inner
ISubCollection :: ObjectRef -> Inner
class (EgisonData a) => EgisonWHNF a where toWHNF = Value . toEgison
toWHNF :: EgisonWHNF a => a -> WHNFData
fromWHNF :: EgisonWHNF a => WHNFData -> EgisonM a
data Env
Env :: [HashMap String ObjectRef] -> Env
data Var
Var :: String -> [Index ()] -> Var
data VarWithIndices
VarWithIndices :: String -> [Index String] -> VarWithIndices
type Binding = (String, ObjectRef)
nullEnv :: Env
extendEnv :: Env -> [Binding] -> Env
refVar :: Env -> String -> Maybe ObjectRef
type Match = [Binding]
data PMMode
BFSMode :: PMMode
DFSMode :: PMMode
pmMode :: Matcher -> PMMode
data MatchingState
MState :: Env -> [LoopPatContext] -> [Binding] -> [MatchingTree] -> MatchingState
data MatchingTree
MAtom :: EgisonPattern -> WHNFData -> Matcher -> MatchingTree
MNode :: [PatternBinding] -> MatchingState -> MatchingTree
type PatternBinding = (String, EgisonPattern)
data LoopPatContext
LoopPatContext :: Binding -> ObjectRef -> EgisonPattern -> EgisonPattern -> EgisonPattern -> LoopPatContext
data EgisonError
UnboundVariable :: String -> EgisonError
TypeMismatch :: String -> WHNFData -> EgisonError
ArgumentsNumWithNames :: [String] -> Int -> Int -> EgisonError
ArgumentsNumPrimitive :: Int -> Int -> EgisonError
ArgumentsNum :: Int -> Int -> EgisonError
InconsistentTensorSize :: EgisonError
InconsistentTensorIndex :: EgisonError
TensorIndexOutOfBounds :: Integer -> Integer -> EgisonError
NotImplemented :: String -> EgisonError
Assertion :: String -> EgisonError
Match :: String -> EgisonError
Parser :: String -> EgisonError
Desugar :: String -> EgisonError
EgisonBug :: String -> EgisonError
Default :: String -> EgisonError
liftError :: (MonadError e m) => Either e a -> m a
newtype EgisonM a
EgisonM :: (ExceptT EgisonError (FreshT IO) a) -> EgisonM a
[unEgisonM] :: EgisonM a -> (ExceptT EgisonError (FreshT IO) a)
parallelMapM :: (a -> EgisonM b) -> [a] -> EgisonM [b]
runEgisonM :: EgisonM a -> FreshT IO (Either EgisonError a)
liftEgisonM :: Fresh (Either EgisonError a) -> EgisonM a
fromEgisonM :: EgisonM a -> IO (Either EgisonError a)
newtype FreshT m a
FreshT :: StateT (Int, Int) m a -> FreshT m a
[unFreshT] :: FreshT m a -> StateT (Int, Int) m a
type Fresh = FreshT Identity
class (Applicative m, Monad m) => MonadFresh m
fresh :: MonadFresh m => m String
runFreshT :: Monad m => (Int, Int) -> FreshT m a -> m (a, (Int, Int))
type MatchM = MaybeT EgisonM
matchFail :: MatchM a
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)
isBool :: EgisonValue -> Bool
isInteger :: EgisonValue -> Bool
isRational :: EgisonValue -> Bool
isSymbol :: EgisonValue -> Bool
isScalar :: EgisonValue -> Bool
isTensor :: EgisonValue -> Bool
isTensorWithIndex :: EgisonValue -> Bool
isBool' :: PrimitiveFunc
isInteger' :: PrimitiveFunc
isRational' :: PrimitiveFunc
isScalar' :: PrimitiveFunc
isFloat' :: PrimitiveFunc
isComplex' :: PrimitiveFunc
isTensor' :: PrimitiveFunc
isTensorWithIndex' :: PrimitiveFunc
isChar' :: PrimitiveFunc
isString' :: PrimitiveFunc
isCollection' :: PrimitiveFunc
isArray' :: PrimitiveFunc
isHash' :: PrimitiveFunc
instance GHC.Show.Show Language.Egison.Types.MatchingTree
instance GHC.Show.Show Language.Egison.Types.MatchingState
instance GHC.Show.Show Language.Egison.Types.LoopPatContext
instance GHC.Classes.Eq Language.Egison.Types.SymbolExpr
instance GHC.Classes.Eq Language.Egison.Types.ScalarData
instance GHC.Show.Show Language.Egison.Types.Env
instance GHC.Show.Show a => GHC.Show.Show (Language.Egison.Types.Tensor a)
instance Language.Egison.Types.MonadFresh Language.Egison.Types.EgisonM
instance Control.Monad.Error.Class.MonadError Language.Egison.Types.EgisonError Language.Egison.Types.EgisonM
instance Control.Monad.IO.Class.MonadIO Language.Egison.Types.EgisonM
instance GHC.Base.Monad Language.Egison.Types.EgisonM
instance GHC.Base.Applicative Language.Egison.Types.EgisonM
instance GHC.Base.Functor Language.Egison.Types.EgisonM
instance Control.Monad.Trans.Class.MonadTrans Language.Egison.Types.FreshT
instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState (GHC.Types.Int, GHC.Types.Int) (Language.Egison.Types.FreshT m)
instance GHC.Base.Monad m => GHC.Base.Monad (Language.Egison.Types.FreshT m)
instance GHC.Base.Monad m => GHC.Base.Applicative (Language.Egison.Types.FreshT m)
instance GHC.Base.Functor m => GHC.Base.Functor (Language.Egison.Types.FreshT m)
instance GHC.Show.Show Language.Egison.Types.PMMode
instance GHC.Classes.Eq Language.Egison.Types.VarWithIndices
instance GHC.Classes.Eq Language.Egison.Types.EgisonTopExpr
instance GHC.Show.Show Language.Egison.Types.EgisonTopExpr
instance GHC.Classes.Eq Language.Egison.Types.Var
instance GHC.Classes.Eq Language.Egison.Types.InnerExpr
instance GHC.Show.Show Language.Egison.Types.InnerExpr
instance GHC.Classes.Eq Language.Egison.Types.LoopRange
instance GHC.Show.Show Language.Egison.Types.LoopRange
instance GHC.Classes.Eq Language.Egison.Types.EgisonPattern
instance GHC.Show.Show Language.Egison.Types.EgisonPattern
instance GHC.Classes.Eq Language.Egison.Types.EgisonExpr
instance GHC.Classes.Eq Language.Egison.Types.PrimitiveDataPattern
instance GHC.Show.Show Language.Egison.Types.PrimitiveDataPattern
instance GHC.Classes.Eq Language.Egison.Types.PrimitivePatPattern
instance GHC.Show.Show Language.Egison.Types.PrimitivePatPattern
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Egison.Types.UserIndex a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Egison.Types.Index a)
instance GHC.Classes.Eq Language.Egison.Types.Arg
instance GHC.Classes.Eq Language.Egison.Types.PolyExpr
instance GHC.Classes.Eq Language.Egison.Types.TermExpr
instance Language.Egison.Types.HasTensor Language.Egison.Types.EgisonValue
instance Language.Egison.Types.HasTensor Language.Egison.Types.WHNFData
instance GHC.Show.Show Language.Egison.Types.EgisonExpr
instance GHC.Show.Show Language.Egison.Types.EgisonValue
instance GHC.Show.Show Language.Egison.Types.Arg
instance GHC.Show.Show Language.Egison.Types.ScalarData
instance GHC.Show.Show Language.Egison.Types.PolyExpr
instance GHC.Show.Show Language.Egison.Types.TermExpr
instance GHC.Show.Show Language.Egison.Types.SymbolExpr
instance GHC.Classes.Eq Language.Egison.Types.EgisonValue
instance Language.Egison.Types.EgisonData GHC.Types.Char
instance Language.Egison.Types.EgisonData Data.Text.Internal.Text
instance Language.Egison.Types.EgisonData GHC.Types.Bool
instance Language.Egison.Types.EgisonData GHC.Integer.Type.Integer
instance Language.Egison.Types.EgisonData GHC.Real.Rational
instance Language.Egison.Types.EgisonData GHC.Types.Double
instance Language.Egison.Types.EgisonData GHC.IO.Handle.Types.Handle
instance Language.Egison.Types.EgisonData a => Language.Egison.Types.EgisonData [a]
instance Language.Egison.Types.EgisonData ()
instance (Language.Egison.Types.EgisonData a, Language.Egison.Types.EgisonData b) => Language.Egison.Types.EgisonData (a, b)
instance (Language.Egison.Types.EgisonData a, Language.Egison.Types.EgisonData b, Language.Egison.Types.EgisonData c) => Language.Egison.Types.EgisonData (a, b, c)
instance (Language.Egison.Types.EgisonData a, Language.Egison.Types.EgisonData b, Language.Egison.Types.EgisonData c, Language.Egison.Types.EgisonData d) => Language.Egison.Types.EgisonData (a, b, c, d)
instance GHC.Show.Show Language.Egison.Types.WHNFData
instance GHC.Show.Show Language.Egison.Types.Object
instance GHC.Show.Show Language.Egison.Types.ObjectRef
instance Language.Egison.Types.EgisonWHNF GHC.Types.Char
instance Language.Egison.Types.EgisonWHNF Data.Text.Internal.Text
instance Language.Egison.Types.EgisonWHNF GHC.Types.Bool
instance Language.Egison.Types.EgisonWHNF GHC.Integer.Type.Integer
instance Language.Egison.Types.EgisonWHNF GHC.Types.Double
instance Language.Egison.Types.EgisonWHNF GHC.IO.Handle.Types.Handle
instance GHC.Show.Show Language.Egison.Types.Var
instance GHC.Show.Show Language.Egison.Types.VarWithIndices
instance GHC.Show.Show (Language.Egison.Types.Index ())
instance GHC.Show.Show (Language.Egison.Types.Index GHC.Base.String)
instance GHC.Show.Show (Language.Egison.Types.Index Language.Egison.Types.EgisonExpr)
instance GHC.Show.Show (Language.Egison.Types.Index Language.Egison.Types.ScalarData)
instance GHC.Show.Show (Language.Egison.Types.Index Language.Egison.Types.EgisonValue)
instance GHC.Show.Show (Language.Egison.Types.UserIndex Language.Egison.Types.EgisonExpr)
instance GHC.Show.Show (Language.Egison.Types.UserIndex Language.Egison.Types.ScalarData)
instance GHC.Show.Show (Language.Egison.Types.UserIndex Language.Egison.Types.EgisonValue)
instance GHC.Show.Show Language.Egison.Types.EgisonError
instance GHC.Exception.Exception Language.Egison.Types.EgisonError
instance (GHC.Base.Applicative m, GHC.Base.Monad m) => Language.Egison.Types.MonadFresh (Language.Egison.Types.FreshT m)
instance Control.Monad.Error.Class.MonadError e m => Control.Monad.Error.Class.MonadError e (Language.Egison.Types.FreshT m)
instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Language.Egison.Types.FreshT m)
instance Language.Egison.Types.MonadFresh m => Language.Egison.Types.MonadFresh (Control.Monad.Trans.State.Lazy.StateT s m)
instance Language.Egison.Types.MonadFresh m => Language.Egison.Types.MonadFresh (Control.Monad.Trans.Except.ExceptT e m)
instance (Language.Egison.Types.MonadFresh m, GHC.Base.Monoid e) => Language.Egison.Types.MonadFresh (Control.Monad.Trans.Reader.ReaderT e m)
instance (Language.Egison.Types.MonadFresh m, GHC.Base.Monoid e) => Language.Egison.Types.MonadFresh (Control.Monad.Trans.Writer.Lazy.WriterT e m)
instance Control.Monad.IO.Class.MonadIO (Language.Egison.Types.FreshT GHC.Types.IO)
instance GHC.Show.Show (Language.Egison.Types.MList m a)
-- | This module provide desugar functions.
module Language.Egison.Desugar
data DesugarM a
runDesugarM :: DesugarM a -> Fresh (Either EgisonError a)
desugarTopExpr :: EgisonTopExpr -> EgisonM EgisonTopExpr
desugarExpr :: EgisonExpr -> EgisonM EgisonExpr
desugar :: EgisonExpr -> DesugarM EgisonExpr
instance Control.Monad.Reader.Class.MonadReader Language.Egison.Desugar.Subst Language.Egison.Desugar.DesugarM
instance Language.Egison.Types.MonadFresh Language.Egison.Desugar.DesugarM
instance Control.Monad.Error.Class.MonadError Language.Egison.Types.EgisonError Language.Egison.Desugar.DesugarM
instance GHC.Base.Monad Language.Egison.Desugar.DesugarM
instance GHC.Base.Applicative Language.Egison.Desugar.DesugarM
instance GHC.Base.Functor Language.Egison.Desugar.DesugarM
-- | This module provide Egison parser.
module Language.Egison.Parser
readTopExprs :: String -> EgisonM [EgisonTopExpr]
readTopExpr :: String -> EgisonM EgisonTopExpr
readExprs :: String -> EgisonM [EgisonExpr]
readExpr :: String -> EgisonM EgisonExpr
parseTopExprs :: String -> Either EgisonError [EgisonTopExpr]
parseTopExpr :: String -> Either EgisonError EgisonTopExpr
parseExprs :: String -> Either EgisonError [EgisonExpr]
parseExpr :: String -> Either EgisonError EgisonExpr
-- | Load a libary file
loadLibraryFile :: FilePath -> EgisonM [EgisonTopExpr]
-- | Load a file
loadFile :: FilePath -> EgisonM [EgisonTopExpr]
-- | This module provides utility functions.
module Language.Egison.Util
-- | Get Egison expression from the prompt. We can handle multiline input.
getEgisonExpr :: String -> InputT IO (Maybe (String, EgisonTopExpr))
-- | Get Egison expression from the prompt. We can handle multiline input.
getEgisonExprOrNewLine :: String -> InputT IO (Either (Maybe String) (String, EgisonTopExpr))
-- | Complete Egison keywords
completeEgison :: Monad m => CompletionFunc m
-- | This module provides functions to evaluate various objects.
module Language.Egison.Core
evalTopExprs :: Env -> [EgisonTopExpr] -> EgisonM Env
evalTopExprsTestOnly :: Env -> [EgisonTopExpr] -> EgisonM Env
evalTopExprsNoIO :: Env -> [EgisonTopExpr] -> EgisonM Env
evalTopExpr :: Env -> EgisonTopExpr -> EgisonM Env
evalExpr :: Env -> EgisonExpr -> EgisonM WHNFData
evalExprDeep :: Env -> EgisonExpr -> EgisonM EgisonValue
evalRef :: ObjectRef -> EgisonM WHNFData
evalRefDeep :: ObjectRef -> EgisonM EgisonValue
evalWHNF :: WHNFData -> EgisonM EgisonValue
applyFunc :: Env -> WHNFData -> WHNFData -> EgisonM WHNFData
refArray :: WHNFData -> [EgisonValue] -> EgisonM WHNFData
arrayBounds :: WHNFData -> EgisonM WHNFData
recursiveBind :: Env -> [(String, EgisonExpr)] -> EgisonM Env
patternMatch :: Env -> EgisonPattern -> WHNFData -> Matcher -> EgisonM (MList EgisonM Match)
isEmptyCollection :: WHNFData -> EgisonM Bool
unconsCollection :: WHNFData -> MatchM (ObjectRef, ObjectRef)
unsnocCollection :: WHNFData -> MatchM (ObjectRef, ObjectRef)
tupleToList :: WHNFData -> EgisonM [EgisonValue]
collectionToList :: WHNFData -> EgisonM [EgisonValue]
packStringValue :: EgisonValue -> EgisonM Text
-- | 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
-- | eval an Egison expression
evalEgisonExpr :: Env -> EgisonExpr -> IO (Either EgisonError EgisonValue)
-- | eval an Egison top expression
evalEgisonTopExpr :: Env -> EgisonTopExpr -> IO (Either EgisonError Env)
-- | eval Egison top expressions
evalEgisonTopExprs :: Env -> [EgisonTopExpr] -> IO (Either EgisonError Env)
-- | eval Egison top expressions and execute test expressions
evalEgisonTopExprsTestOnly :: Env -> [EgisonTopExpr] -> IO (Either EgisonError Env)
-- | eval an Egison expression. Input is a Haskell string.
runEgisonExpr :: Env -> String -> IO (Either EgisonError EgisonValue)
-- | eval an Egison top expression. Input is a Haskell string.
runEgisonTopExpr :: Env -> String -> IO (Either EgisonError Env)
-- | eval Egison top expressions. Input is a Haskell string.
runEgisonTopExprs :: Env -> String -> IO (Either EgisonError Env)
-- | eval Egison top expressions without IO. Input is a Haskell string.
runEgisonTopExprsNoIO :: Env -> String -> IO (Either EgisonError Env)
-- | load an Egison library
loadEgisonLibrary :: Env -> FilePath -> IO (Either EgisonError Env)
-- | load an Egison file
loadEgisonFile :: Env -> FilePath -> IO (Either EgisonError Env)
-- | Environment that contains core libraries
initialEnv :: IO Env
-- | Environment that contains core libraries without IO primitives
initialEnvNoIO :: IO Env
-- | Version number
version :: Version