Copyright | Satoshi Egi |
---|---|
License | MIT |
Safe Haskell | None |
Language | Haskell98 |
This module contains type definitions of Egison Data.
- data EgisonTopExpr
- data EgisonExpr
- = CharExpr Char
- | StringExpr Text
- | BoolExpr Bool
- | IntegerExpr Integer
- | FloatExpr Double Double
- | VarExpr String
- | IndexedExpr EgisonExpr [EgisonExpr]
- | PowerExpr EgisonExpr EgisonExpr
- | InductiveDataExpr String [EgisonExpr]
- | TupleExpr [EgisonExpr]
- | CollectionExpr [InnerExpr]
- | ArrayExpr [EgisonExpr]
- | HashExpr [(EgisonExpr, EgisonExpr)]
- | TensorExpr EgisonExpr EgisonExpr
- | LambdaExpr [String] EgisonExpr
- | MemoizedLambdaExpr [String] EgisonExpr
- | MemoizeExpr [(EgisonExpr, EgisonExpr, EgisonExpr)] EgisonExpr
- | CambdaExpr String EgisonExpr
- | MacroExpr [String] EgisonExpr
- | PatternFunctionExpr [String] EgisonPattern
- | IfExpr EgisonExpr EgisonExpr EgisonExpr
- | LetRecExpr [BindingExpr] EgisonExpr
- | LetExpr [BindingExpr] EgisonExpr
- | LetStarExpr [BindingExpr] EgisonExpr
- | MatchExpr EgisonExpr EgisonExpr [MatchClause]
- | MatchAllExpr EgisonExpr EgisonExpr MatchClause
- | MatchLambdaExpr EgisonExpr [MatchClause]
- | MatchAllLambdaExpr EgisonExpr MatchClause
- | NextMatchExpr EgisonExpr EgisonExpr [MatchClause]
- | NextMatchAllExpr EgisonExpr EgisonExpr MatchClause
- | NextMatchLambdaExpr EgisonExpr [MatchClause]
- | NextMatchAllLambdaExpr EgisonExpr MatchClause
- | MatcherBFSExpr MatcherInfo
- | MatcherDFSExpr MatcherInfo
- | AlgebraicDataMatcherExpr [(String, [EgisonExpr])]
- | DoExpr [BindingExpr] EgisonExpr
- | IoExpr EgisonExpr
- | SeqExpr EgisonExpr EgisonExpr
- | ApplyExpr EgisonExpr EgisonExpr
- | CApplyExpr EgisonExpr EgisonExpr
- | PartialExpr Integer EgisonExpr
- | PartialVarExpr Integer
- | RecVarExpr
- | GenerateArrayExpr EgisonExpr (EgisonExpr, EgisonExpr)
- | ArrayBoundsExpr EgisonExpr
- | ArrayRefExpr EgisonExpr EgisonExpr
- | GenerateTensorExpr EgisonExpr EgisonExpr
- | InitTensorExpr EgisonExpr EgisonExpr EgisonExpr
- | TensorMapExpr EgisonExpr EgisonExpr
- | TensorMap2Expr EgisonExpr EgisonExpr EgisonExpr
- | SomethingExpr
- | UndefinedExpr
- data EgisonPattern
- = WildCard
- | PatVar String
- | ValuePat EgisonExpr
- | RegexPat EgisonExpr
- | PredPat EgisonExpr
- | IndexedPat EgisonPattern [EgisonExpr]
- | LetPat [BindingExpr] EgisonPattern
- | NotPat EgisonPattern
- | AndPat [EgisonPattern]
- | OrPat [EgisonPattern]
- | OrderedOrPat [EgisonPattern]
- | TuplePat [EgisonPattern]
- | InductivePat String [EgisonPattern]
- | LoopPat String LoopRange EgisonPattern EgisonPattern
- | ContPat
- | PApplyPat EgisonExpr [EgisonPattern]
- | DApplyPat EgisonPattern [EgisonPattern]
- | VarPat String
- data InnerExpr
- type BindingExpr = ([String], EgisonExpr)
- type MatchClause = (EgisonPattern, EgisonExpr)
- type MatcherInfo = [(PrimitivePatPattern, EgisonExpr, [(PrimitiveDataPattern, EgisonExpr)])]
- data LoopRange = LoopRange EgisonExpr EgisonExpr EgisonPattern
- data PrimitivePatPattern
- data PrimitiveDataPattern
- data EgisonValue
- = World
- | Char Char
- | String Text
- | Bool Bool
- | ScalarData ScalarData
- | TensorData TensorData
- | Float Double Double
- | InductiveData String [EgisonValue]
- | Tuple [EgisonValue]
- | Collection (Seq EgisonValue)
- | Array (Array Integer EgisonValue)
- | IntHash (HashMap Integer EgisonValue)
- | CharHash (HashMap Char EgisonValue)
- | StrHash (HashMap Text EgisonValue)
- | UserMatcher Env PMMode MatcherInfo
- | Func (Maybe String) Env [String] EgisonExpr
- | CFunc (Maybe String) Env String EgisonExpr
- | MemoizedFunc (Maybe String) ObjectRef (IORef (HashMap [Integer] ObjectRef)) Env [String] EgisonExpr
- | Macro [String] EgisonExpr
- | PatternFunc Env [String] EgisonPattern
- | PrimitiveFunc String PrimitiveFunc
- | IOFunc (EgisonM WHNFData)
- | Port Handle
- | Something
- | Undefined
- | EOF
- data ScalarData = Div PolyExpr PolyExpr
- data PolyExpr = Plus [TermExpr]
- data TermExpr = Term Integer [(SymbolExpr, Integer)]
- data SymbolExpr
- = Symbol String [Integer]
- | Apply EgisonValue [ScalarData]
- data TensorData = TData (Tensor ScalarData) (Maybe [ScalarData])
- data Tensor a = Tensor [Integer] [a]
- scalarToUnitTensor :: [Integer] -> ScalarData -> Maybe [ScalarData] -> TensorData
- scalarToTensor :: [Integer] -> ScalarData -> Maybe [ScalarData] -> TensorData
- tMap :: (ScalarData -> EgisonM ScalarData) -> TensorData -> EgisonM TensorData
- tMap2 :: (ScalarData -> ScalarData -> EgisonM ScalarData) -> TensorData -> TensorData -> EgisonM TensorData
- tCheckIndex :: [ScalarData] -> [Integer] -> EgisonM ()
- tContract :: TensorData -> EgisonM EgisonValue
- tref :: [ScalarData] -> Tensor a -> Tensor a
- tref' :: [Integer] -> Tensor a -> a
- tSize :: TensorData -> [Integer]
- tToList :: Tensor a -> [a]
- tIndex :: TensorData -> Maybe [ScalarData]
- makeTensor :: [Integer] -> [ScalarData] -> Maybe [ScalarData] -> TensorData
- tensorIndices :: [Integer] -> [[Integer]]
- symbolScalarData :: String -> [Integer] -> EgisonValue
- mathExprToEgison :: ScalarData -> EgisonValue
- egisonToScalarData :: EgisonValue -> EgisonM ScalarData
- mathNormalize' :: ScalarData -> ScalarData
- mathFold :: ScalarData -> ScalarData
- mathSymbolFold :: ScalarData -> ScalarData
- mathTermFold :: ScalarData -> ScalarData
- mathRemoveZero :: ScalarData -> ScalarData
- mathReduceFraction :: ScalarData -> ScalarData
- mathReduceSymbolFraction :: ScalarData -> ScalarData
- mathPlus :: ScalarData -> ScalarData -> ScalarData
- mathMult :: ScalarData -> ScalarData -> ScalarData
- mathNegate :: ScalarData -> ScalarData
- mathNumerator :: ScalarData -> ScalarData
- mathDenominator :: ScalarData -> ScalarData
- type Matcher = EgisonValue
- type PrimitiveFunc = WHNFData -> EgisonM WHNFData
- class EgisonData a where
- toEgison :: a -> EgisonValue
- fromEgison :: EgisonValue -> EgisonM a
- showTSV :: EgisonValue -> String
- data Object
- type ObjectRef = IORef Object
- data WHNFData
- data Intermediate
- data Inner
- class EgisonData a => EgisonWHNF a where
- data Env = Env [HashMap Var ObjectRef]
- type Var = String
- type Binding = (Var, ObjectRef)
- nullEnv :: Env
- extendEnv :: Env -> [Binding] -> Env
- refVar :: Env -> Var -> Maybe ObjectRef
- type Match = [Binding]
- data PMMode
- pmMode :: Matcher -> PMMode
- data MatchingState = MState Env [LoopPatContext] [Binding] [MatchingTree]
- data MatchingTree
- type PatternBinding = (Var, EgisonPattern)
- data LoopPatContext = LoopPatContext Binding ObjectRef EgisonPattern EgisonPattern EgisonPattern
- data EgisonError
- = UnboundVariable Var
- | TypeMismatch String WHNFData
- | ArgumentsNumWithNames [String] Int Int
- | ArgumentsNumPrimitive Int Int
- | ArgumentsNum Int Int
- | InconsistentTensorSize
- | InconsistentTensorIndex
- | TensorIndexOutOfBounds Integer Integer
- | NotImplemented String
- | Assertion String
- | Match String
- | Parser String
- | Desugar String
- | EgisonBug String
- | Default String
- liftError :: MonadError e m => Either e a -> m a
- newtype EgisonM a = EgisonM {
- unEgisonM :: ErrorT EgisonError (FreshT IO) a
- 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 {}
- type Fresh = FreshT Identity
- class (Applicative m, Monad m) => MonadFresh m where
- runFreshT :: Monad m => Int -> FreshT m a -> m (a, Int)
- type MatchM = MaybeT EgisonM
- matchFail :: MatchM a
- data 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
- isNumber :: EgisonValue -> Bool
- isTensor :: EgisonValue -> Bool
- isTensorWithIndex :: EgisonValue -> Bool
- isBool' :: PrimitiveFunc
- isInteger' :: PrimitiveFunc
- isRational' :: PrimitiveFunc
- isNumber' :: PrimitiveFunc
- isFloat' :: PrimitiveFunc
- isComplex' :: PrimitiveFunc
- isTensor' :: PrimitiveFunc
- isTensorWithIndex' :: PrimitiveFunc
- isChar' :: PrimitiveFunc
- isString' :: PrimitiveFunc
- isCollection' :: PrimitiveFunc
- isArray' :: PrimitiveFunc
- isHash' :: PrimitiveFunc
Egison expressions
data EgisonTopExpr Source
data EgisonExpr Source
data EgisonPattern Source
type BindingExpr = ([String], EgisonExpr) Source
type MatchClause = (EgisonPattern, EgisonExpr) Source
type MatcherInfo = [(PrimitivePatPattern, EgisonExpr, [(PrimitiveDataPattern, EgisonExpr)])] Source
Egison values
data EgisonValue Source
data ScalarData Source
data SymbolExpr Source
data TensorData Source
TData (Tensor ScalarData) (Maybe [ScalarData]) |
scalarToUnitTensor :: [Integer] -> ScalarData -> Maybe [ScalarData] -> TensorData Source
scalarToTensor :: [Integer] -> ScalarData -> Maybe [ScalarData] -> TensorData Source
tMap :: (ScalarData -> EgisonM ScalarData) -> TensorData -> EgisonM TensorData Source
tMap2 :: (ScalarData -> ScalarData -> EgisonM ScalarData) -> TensorData -> TensorData -> EgisonM TensorData Source
tCheckIndex :: [ScalarData] -> [Integer] -> EgisonM () Source
tref :: [ScalarData] -> Tensor a -> Tensor a Source
tSize :: TensorData -> [Integer] Source
tIndex :: TensorData -> Maybe [ScalarData] Source
makeTensor :: [Integer] -> [ScalarData] -> Maybe [ScalarData] -> TensorData Source
tensorIndices :: [Integer] -> [[Integer]] Source
symbolScalarData :: String -> [Integer] -> EgisonValue Source
mathFold :: ScalarData -> ScalarData Source
mathPlus :: ScalarData -> ScalarData -> ScalarData Source
mathMult :: ScalarData -> ScalarData -> ScalarData Source
mathNegate :: ScalarData -> ScalarData Source
type Matcher = EgisonValue Source
type PrimitiveFunc = WHNFData -> EgisonM WHNFData Source
class EgisonData a where Source
toEgison :: a -> EgisonValue Source
fromEgison :: EgisonValue -> EgisonM a Source
EgisonData Bool Source | |
EgisonData Char Source | |
EgisonData Double Source | |
EgisonData Integer Source | |
EgisonData Rational Source | |
EgisonData () Source | |
EgisonData Handle Source | |
EgisonData Text Source | |
EgisonData a => EgisonData [a] Source | |
(EgisonData a, EgisonData b) => EgisonData (a, b) Source | |
(EgisonData a, EgisonData b, EgisonData c) => EgisonData (a, b, c) Source | |
(EgisonData a, EgisonData b, EgisonData c, EgisonData d) => EgisonData (a, b, c, d) Source |
showTSV :: EgisonValue -> String Source
Internal data
data Intermediate Source
class EgisonData a => EgisonWHNF a where Source
Environment
Pattern matching
data MatchingState Source
data MatchingTree Source
type PatternBinding = (Var, EgisonPattern) Source
data LoopPatContext Source
Errors
data EgisonError Source
liftError :: MonadError e m => Either e a -> m a Source
Monads
runEgisonM :: EgisonM a -> FreshT IO (Either EgisonError a) Source
liftEgisonM :: Fresh (Either EgisonError a) -> EgisonM a Source
fromEgisonM :: EgisonM a -> IO (Either EgisonError a) Source
MonadTrans FreshT Source | |
MonadError e m => MonadError e (FreshT m) Source | |
Monad m => MonadState Int (FreshT m) Source | |
MonadState s m => MonadState s (FreshT m) Source | |
Monad m => Monad (FreshT m) Source | |
Functor m => Functor (FreshT m) Source | |
Monad m => Applicative (FreshT m) Source | |
MonadIO (FreshT IO) Source | |
(Applicative m, Monad m) => MonadFresh (FreshT m) Source |
class (Applicative m, Monad m) => MonadFresh m where Source
MonadFresh EgisonM Source | |
MonadFresh DesugarM Source | |
(Applicative m, Monad m) => MonadFresh (FreshT m) Source | |
(MonadFresh m, Monoid e) => MonadFresh (ReaderT e m) Source | |
MonadFresh m => MonadFresh (StateT s m) Source | |
(MonadFresh m, Error e) => MonadFresh (ErrorT e m) Source | |
(MonadFresh m, Monoid e) => MonadFresh (WriterT e m) Source |
msingleton :: Monad m => a -> MList m a Source
Typing
isBool :: EgisonValue -> Bool Source
isInteger :: EgisonValue -> Bool Source
isRational :: EgisonValue -> Bool Source
isSymbol :: EgisonValue -> Bool Source
isNumber :: EgisonValue -> Bool Source
isTensor :: EgisonValue -> Bool Source