| License | MIT |
|---|---|
| Safe Haskell | None |
| Language | GHC2021 |
Language.Egison.Data
Description
This module contains definitions for Egison internal data.
Synopsis
- data EgisonValue
- = World
- | Char Char
- | String Text
- | Bool Bool
- | ScalarData ScalarData
- | TensorData (Tensor EgisonValue)
- | Float Double
- | InductiveData String [EgisonValue]
- | Tuple [EgisonValue]
- | Collection (Seq EgisonValue)
- | IntHash (HashMap Integer EgisonValue)
- | CharHash (HashMap Char EgisonValue)
- | StrHash (HashMap Text EgisonValue)
- | UserMatcher Env [IPatternDef]
- | Func (Maybe Var) Env [Var] IExpr
- | CFunc Env String IExpr
- | MemoizedFunc (IORef (HashMap [Integer] WHNFData)) Env [String] IExpr
- | PatternFunc Env [String] IPattern
- | PrimitiveFunc PrimitiveFunc
- | LazyPrimitiveFunc LazyPrimitiveFunc
- | IOFunc (EvalM WHNFData)
- | Port Handle
- | RefBox (IORef EgisonValue)
- | Something
- | Undefined
- | ClassMethodRef String String
- | PolyExprData PolyExpr
- | TermExprData TermExpr
- | SymbolExprData SymbolExpr
- | IndexExprData (Index ScalarData)
- type Matcher = EgisonValue
- type PrimitiveFunc = [EgisonValue] -> EvalM EgisonValue
- type LazyPrimitiveFunc = [WHNFData] -> EvalM WHNFData
- data EgisonHashKey
- class EgisonData a where
- toEgison :: a -> EgisonValue
- fromEgison :: EgisonValue -> EvalM a
- data Tensor a
- = Tensor Shape (Vector a) [Index EgisonValue]
- | Scalar 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
- type ObjectRef = IORef Object
- data WHNFData
- data Inner
- prettyFunctionName :: WHNFData -> Maybe String
- data Env = Env [EnvLayer] (Maybe (String, [Index (Maybe ScalarData)])) PatFuncEnv
- type EnvLayer = Map String [VarEntry ObjectRef]
- type PatFuncEnv = Map String ObjectRef
- type Binding = (Var, ObjectRef)
- nullEnv :: Env
- extendEnv :: Env -> [Binding] -> Env
- extendPatFuncEnv :: Env -> [(String, ObjectRef)] -> Env
- refVar :: Env -> Var -> Maybe ObjectRef
- refPatFunc :: Env -> String -> Maybe ObjectRef
- envToBindingList :: Env -> [Binding]
- data EgisonError
- = UnboundVariable String CallStack
- | TypeMismatch String WHNFData CallStack
- | ArgumentsNumPrimitive String Int Int CallStack
- | TupleLength Int Int CallStack
- | InconsistentTensorShape CallStack
- | InconsistentTensorIndex [String] [String] CallStack
- | TensorIndexOutOfBounds Integer Integer CallStack
- | NotImplemented String CallStack
- | Assertion String CallStack
- | Parser String
- | EgisonBug String CallStack
- | MatchFailure CallStack
- | PrimitiveMatchFailure CallStack
- | Default String
- throwErrorWithTrace :: (CallStack -> EgisonError) -> EvalM a
- type EvalM = EvalT RuntimeM
- fromEvalM :: EgisonOpts -> EvalM a -> IO (Either EgisonError a)
- fromEvalT :: EvalM a -> RuntimeM (Either EgisonError a)
- fromEvalTWithState :: EvalState -> EvalM a -> RuntimeM (Either EgisonError (a, EvalState))
Egison values
data EgisonValue Source #
Constructors
| World | |
| Char Char | |
| String Text | |
| Bool Bool | |
| ScalarData ScalarData | |
| TensorData (Tensor EgisonValue) | |
| Float Double | |
| InductiveData String [EgisonValue] | |
| Tuple [EgisonValue] | |
| Collection (Seq EgisonValue) | |
| IntHash (HashMap Integer EgisonValue) | |
| CharHash (HashMap Char EgisonValue) | |
| StrHash (HashMap Text EgisonValue) | |
| UserMatcher Env [IPatternDef] | |
| Func (Maybe Var) Env [Var] IExpr | |
| CFunc Env String IExpr | |
| MemoizedFunc (IORef (HashMap [Integer] WHNFData)) Env [String] IExpr | |
| PatternFunc Env [String] IPattern | |
| PrimitiveFunc PrimitiveFunc | |
| LazyPrimitiveFunc LazyPrimitiveFunc | |
| IOFunc (EvalM WHNFData) | |
| Port Handle | |
| RefBox (IORef EgisonValue) | |
| Something | |
| Undefined | |
| ClassMethodRef String String | Type class method reference: dispatches based on argument type at runtime ClassMethodRef className methodName Looks up implementation from the instance environment in EvalState |
| PolyExprData PolyExpr | |
| TermExprData TermExpr | |
| SymbolExprData SymbolExpr | |
| IndexExprData (Index ScalarData) |
Instances
| Show EgisonValue Source # | |
Defined in Language.Egison.Data Methods showsPrec :: Int -> EgisonValue -> ShowS # show :: EgisonValue -> String # showList :: [EgisonValue] -> ShowS # | |
| ToMathExpr EgisonValue Source # | |
Defined in Language.Egison.PrettyMath.AST Methods toMathExpr :: EgisonValue -> MathExpr Source # | |
| Eq EgisonValue Source # | |
Defined in Language.Egison.Data | |
| TensorComponent EgisonValue EgisonValue Source # | |
Defined in Language.Egison.Tensor Methods fromTensor :: Tensor EgisonValue -> EvalM EgisonValue Source # toTensor :: EgisonValue -> EvalM (Tensor EgisonValue) Source # | |
| Show (Index EgisonValue) Source # | |
Defined in Language.Egison.Data | |
| EgisonData (IORef EgisonValue) Source # | |
Defined in Language.Egison.Data Methods toEgison :: IORef EgisonValue -> EgisonValue Source # fromEgison :: EgisonValue -> EvalM (IORef EgisonValue) Source # | |
type Matcher = EgisonValue Source #
type PrimitiveFunc = [EgisonValue] -> EvalM EgisonValue Source #
class EgisonData a where Source #
Instances
Constructors
| Tensor Shape (Vector a) [Index EgisonValue] | |
| Scalar a |
Instances
| Show a => Show (Tensor a) Source # | |
| ToMathExpr a => ToMathExpr (Tensor a) Source # | |
Defined in Language.Egison.PrettyMath.AST Methods toMathExpr :: Tensor a -> MathExpr Source # | |
Scalar
symbolScalarData :: String -> String -> EgisonValue Source #
symbolScalarData' :: String -> ScalarData Source #
getSymId :: EgisonValue -> String Source #
getSymName :: EgisonValue -> String Source #
Internal data
Constructors
Environment
Environment: list of layers (for scoping) plus optional index context, plus a separate store for pattern functions.
Constructors
| Env [EnvLayer] (Maybe (String, [Index (Maybe ScalarData)])) PatFuncEnv |
type EnvLayer = Map String [VarEntry ObjectRef] Source #
Environment layer: maps base variable names to all bindings with that name VarEntry list is sorted by index length (shortest first) for efficient prefix matching
type PatFuncEnv = Map String ObjectRef Source #
Pattern function environment: maps pattern function names to their ObjectRefs. Kept separate from the regular value environment so that pattern typing is independent of which matcher is in scope (matcher polymorphism).
extendEnv :: Env -> [Binding] -> Env Source #
Extend environment with new bindings Groups bindings by base name and sorts by index length (shortest first)
extendPatFuncEnv :: Env -> [(String, ObjectRef)] -> Env Source #
Extend the pattern function environment with new name→ref bindings. The regular value layers and index context are preserved unchanged.
refVar :: Env -> Var -> Maybe ObjectRef Source #
Look up a variable in the environment Search algorithm: 1. Try exact match 2. Try prefix match (find longer indices and auto-complete with #) 3. Try suffix removal (find shorter indices, pick longest match) No recursion is used; all matching is done in a single pass to avoid infinite loops.
refPatFunc :: Env -> String -> Maybe ObjectRef Source #
Look up a pattern function by name in the pattern function environment.
envToBindingList :: Env -> [Binding] Source #
Convert environment to list of bindings Used for completion and debugging
Errors
data EgisonError Source #
Constructors
| UnboundVariable String CallStack | |
| TypeMismatch String WHNFData CallStack | |
| ArgumentsNumPrimitive String Int Int CallStack | |
| TupleLength Int Int CallStack | |
| InconsistentTensorShape CallStack | |
| InconsistentTensorIndex [String] [String] CallStack | |
| TensorIndexOutOfBounds Integer Integer CallStack | |
| NotImplemented String CallStack | |
| Assertion String CallStack | |
| Parser String | |
| EgisonBug String CallStack | |
| MatchFailure CallStack | |
| PrimitiveMatchFailure CallStack | |
| Default String |
Instances
| Exception EgisonError Source # | |
Defined in Language.Egison.Data Methods toException :: EgisonError -> SomeException # fromException :: SomeException -> Maybe EgisonError # displayException :: EgisonError -> String # | |
| Show EgisonError Source # | |
Defined in Language.Egison.Data Methods showsPrec :: Int -> EgisonError -> ShowS # show :: EgisonError -> String # showList :: [EgisonError] -> ShowS # | |
| MonadRuntime EvalM Source # | |
throwErrorWithTrace :: (CallStack -> EgisonError) -> EvalM a Source #
Monads
fromEvalM :: EgisonOpts -> EvalM a -> IO (Either EgisonError a) Source #
fromEvalTWithState :: EvalState -> EvalM a -> RuntimeM (Either EgisonError (a, EvalState)) Source #
Run EvalM with a given EvalState (for REPL to preserve state between evaluations)