Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- data ctx :- a where
- ELam :: (Var a -> (ctx, a) :- b) -> ctx :- (a -> b)
- EApp :: (ctx :- (a -> b)) -> (ctx, a) :- b
- ECompose :: (b :- c) -> (a :- b) -> a :- c
- EVar :: Var a -> ctx :- a
- EPair :: (ctx :- a) -> (ctx :- b) -> ctx :- (a, b)
- EFst :: (ctx, a) :- ctx
- ESnd :: (ctx, a) :- a
- ECase :: (a :- c) -> (b :- c) -> Either a b :- c
- EIn1 :: a :- Either a b
- EIn2 :: b :- Either a b
- ETerminal :: ctx :- ()
- EInitial :: Contradiction :- b
- EVec :: VectorSpaceExpr v a -> () :- v a
- ENum :: NumExpr v a -> () :- a
- data Contradiction
- identity_expr :: ctx :- (b -> b)
- pair_identity_expr :: (a, b) :- (a, b)
- either_identity_expr :: Either a b :- Either a b
- pair_expr :: ctx :- (a -> b -> (a, b))
- var_intro :: (Var a -> (ctx, a) :- b) -> (ctx, a) :- b
- data Var a
- varIso :: IsoA Var a b -> Var a :==: Var b
- class Expression e ctx a where
- eval :: ctx a -> e a -> a
- equal_in_context :: (Eq a, Expression f ctx a) => ctx a -> f a -> f a -> Bool
- evalVar :: [a] -> Var a -> a
- withCtx :: Functor f => [a] -> (f :*: Var) a -> f a
- eVar :: Applicative f => String -> Integer -> (f :*: Var) a
- expr :: Functor f => f a -> (f :*: Var) a
- data VectorCtx v a = VectorCtx {
- vectorSpaceCtx :: Map String (VectorSpaceExpr v a)
- numCtx :: [a]
- data VectorSpaceExpr v a
- = VZero
- | VNegate (VectorSpaceExpr v a)
- | VPlus (VectorSpaceExpr v a) (VectorSpaceExpr v a)
- | VScalar (NumExpr v a) (VectorSpaceExpr v a)
- | VVectorVar (Var (VectorSpaceExpr v a))
- | VPrim (v a)
- reduceVectorSpaceExpr :: VectorSpaceExpr v a -> VectorSpaceExpr v a
- vectorSpaceIso :: FunctorArrow v (->) (->) => IsoA (VectorSpaceExpr v) a b -> VectorSpaceExpr v a :==: VectorSpaceExpr v b
- evalVectorSpaceExpr :: (VectorSpace (v a), IdVisitor a, Expression Var (Map String) (VectorSpaceExpr v a), Scalar (v a) ~ a) => VectorCtx v a -> VectorSpaceExpr v a -> v a
- data NumExpr v a
- numIso :: FunctorArrow v (->) (->) => IsoA (NumExpr v) a b -> NumExpr v a :==: NumExpr v b
- plus_assoc_iso :: NumExpr v a :==: NumExpr v a
- product_assoc_iso :: NumExpr v a :==: NumExpr v a
- data FracExpr v a
- = PrimFracExpr !(NumExpr v a)
- | Divide !(FracExpr v a) !(FracExpr v a)
- | Recip !(FracExpr v a)
- | FromRational !Rational
- data FloatExpr v a
- = PrimPi
- | Exp !(FloatExpr v a)
- | Log !(FloatExpr v a)
- | Sqrt !(FloatExpr v a)
- | Power !(FloatExpr v a) !(FloatExpr v a)
- | Sin !(FloatExpr v a)
- | Cos !(FloatExpr v a)
- | Tan !(FloatExpr v a)
- | Asin !(FloatExpr v a)
- | Acos !(FloatExpr v a)
- | Atan !(FloatExpr v a)
- | Sinh !(FloatExpr v a)
- | Cosh !(FloatExpr v a)
- | Tanh !(FloatExpr v a)
- | Asinh !(FloatExpr v a)
- | Acosh !(FloatExpr v a)
- | Atanh !(FloatExpr v a)
- | PrimFloatExpr !(FracExpr v (FloatExpr v a))
- pp_unary :: PpShow a => Text -> a -> Doc
- class VectorShow v where
- show_vector :: Show a => v a -> String
- liftNumFrac1 :: forall {k} {v :: Type -> Type} {a} {v :: Type -> Type} {a :: k}. (NumExpr v a -> NumExpr v (FloatExpr v a)) -> a -> FloatExpr v a
- liftNumFrac2 :: forall {k} {v :: Type -> Type} {a} {v :: Type -> Type} {a} {v :: Type -> Type} {a :: k}. (NumExpr v a -> NumExpr v a -> NumExpr v (FloatExpr v a)) -> a -> a -> FloatExpr v a
- data EnumExpr a
- runEnumExpr :: Enum a => [a] -> EnumExpr a -> a
- runNumExpr :: (Num a, IdVisitor a) => [a] -> NumExpr v a -> a
- runFracExpr :: (Fractional a, IdVisitor a) => [a] -> FracExpr v a -> a
- varFold :: [a] -> Fold (Var a) a
- vecSpaceFold :: (Visitor (v a), VectorSpace b) => Fold (Var b) b -> Fold (NumExpr v a) (Scalar b) -> Fold (v a) b -> Fold (VectorSpaceExpr v a) b
- numExprFold :: Num a => Fold (Var a) a -> Fold (NumExpr v a) a
- fracExprFold :: Fractional b => Fold (NumExpr v a) b -> Fold (FracExpr v a) b
- enumExprFold :: Enum b => Fold (Var a) b -> Fold (EnumExpr a) b
Documentation
ELam :: (Var a -> (ctx, a) :- b) -> ctx :- (a -> b) | |
EApp :: (ctx :- (a -> b)) -> (ctx, a) :- b | |
ECompose :: (b :- c) -> (a :- b) -> a :- c | |
EVar :: Var a -> ctx :- a | |
EPair :: (ctx :- a) -> (ctx :- b) -> ctx :- (a, b) | |
EFst :: (ctx, a) :- ctx | |
ESnd :: (ctx, a) :- a | |
ECase :: (a :- c) -> (b :- c) -> Either a b :- c | |
EIn1 :: a :- Either a b | |
EIn2 :: b :- Either a b | |
ETerminal :: ctx :- () | |
EInitial :: Contradiction :- b | |
EVec :: VectorSpaceExpr v a -> () :- v a | |
ENum :: NumExpr v a -> () :- a |
data Contradiction Source #
identity_expr :: ctx :- (b -> b) Source #
pair_identity_expr :: (a, b) :- (a, b) Source #
Instances
class Expression e ctx a where Source #
Instances
Enum a => Expression EnumExpr List a Source # | |
Defined in Math.Number.NumericExpression | |
Expression Var List a Source # | |
Defined in Math.Number.NumericExpression | |
Expression Var (VectorCtx v) a Source # | |
(Fractional a, IdVisitor a) => Expression (FracExpr v) List a Source # | |
Defined in Math.Number.NumericExpression | |
(Num a, IdVisitor a) => Expression (NumExpr v) List a Source # | |
Defined in Math.Number.NumericExpression |
equal_in_context :: (Eq a, Expression f ctx a) => ctx a -> f a -> f a -> Bool Source #
VectorCtx | |
|
Instances
Expression Var (VectorCtx v) a Source # | |
(Typeable v, Data a, Data (v a)) => Data (VectorCtx v a) Source # | |
Defined in Math.Number.NumericExpression gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> VectorCtx v a -> c (VectorCtx v a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (VectorCtx v a) # toConstr :: VectorCtx v a -> Constr # dataTypeOf :: VectorCtx v a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (VectorCtx v a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (VectorCtx v a)) # gmapT :: (forall b. Data b => b -> b) -> VectorCtx v a -> VectorCtx v a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> VectorCtx v a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> VectorCtx v a -> r # gmapQ :: (forall d. Data d => d -> u) -> VectorCtx v a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> VectorCtx v a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> VectorCtx v a -> m (VectorCtx v a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> VectorCtx v a -> m (VectorCtx v a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> VectorCtx v a -> m (VectorCtx v a) # | |
Generic (VectorCtx v a) Source # | |
(Eq a, Eq (v a)) => Eq (VectorCtx v a) Source # | |
type Rep (VectorCtx v a) Source # | |
Defined in Math.Number.NumericExpression type Rep (VectorCtx v a) = D1 ('MetaData "VectorCtx" "Math.Number.NumericExpression" "cifl-math-library-1.1.1.0-JEQP78tsA0rJRaFkv5LJVZ" 'False) (C1 ('MetaCons "VectorCtx" 'PrefixI 'True) (S1 ('MetaSel ('Just "vectorSpaceCtx") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String (VectorSpaceExpr v a))) :*: S1 ('MetaSel ('Just "numCtx") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a]))) |
data VectorSpaceExpr v a Source #
VZero | |
VNegate (VectorSpaceExpr v a) | |
VPlus (VectorSpaceExpr v a) (VectorSpaceExpr v a) | |
VScalar (NumExpr v a) (VectorSpaceExpr v a) | |
VVectorVar (Var (VectorSpaceExpr v a)) | |
VPrim (v a) |
Instances
reduceVectorSpaceExpr :: VectorSpaceExpr v a -> VectorSpaceExpr v a Source #
vectorSpaceIso :: FunctorArrow v (->) (->) => IsoA (VectorSpaceExpr v) a b -> VectorSpaceExpr v a :==: VectorSpaceExpr v b Source #
evalVectorSpaceExpr :: (VectorSpace (v a), IdVisitor a, Expression Var (Map String) (VectorSpaceExpr v a), Scalar (v a) ~ a) => VectorCtx v a -> VectorSpaceExpr v a -> v a Source #
Basically same as methods in Num type class from prelude, but as data.
Plus !(NumExpr v a) !(NumExpr v a) | |
Product !(NumExpr v a) !(NumExpr v a) | |
Subtract !(NumExpr v a) !(NumExpr v a) | |
Negate !(NumExpr v a) | |
Abs !(NumExpr v a) | |
Signum !(NumExpr v a) | |
NumPrim !(Var a) | |
FromInteger !Integer | |
InnerProduct !(VectorSpaceExpr v a) !(VectorSpaceExpr v a) |
Instances
basically same as Fractional class in Prelude.
PrimFracExpr !(NumExpr v a) | |
Divide !(FracExpr v a) !(FracExpr v a) | |
Recip !(FracExpr v a) | |
FromRational !Rational |
Instances
basically same as Floating class in Prelude, but as data.
PrimPi | |
Exp !(FloatExpr v a) | |
Log !(FloatExpr v a) | |
Sqrt !(FloatExpr v a) | |
Power !(FloatExpr v a) !(FloatExpr v a) | |
Sin !(FloatExpr v a) | |
Cos !(FloatExpr v a) | |
Tan !(FloatExpr v a) | |
Asin !(FloatExpr v a) | |
Acos !(FloatExpr v a) | |
Atan !(FloatExpr v a) | |
Sinh !(FloatExpr v a) | |
Cosh !(FloatExpr v a) | |
Tanh !(FloatExpr v a) | |
Asinh !(FloatExpr v a) | |
Acosh !(FloatExpr v a) | |
Atanh !(FloatExpr v a) | |
PrimFloatExpr !(FracExpr v (FloatExpr v a)) |
Instances
class VectorShow v where Source #
show_vector :: Show a => v a -> String Source #
Instances
VectorShow Var Source # | |
Defined in Math.Number.NumericExpression | |
VectorShow v => VectorShow (FracExpr v) Source # | |
Defined in Math.Number.NumericExpression | |
VectorShow v => VectorShow (NumExpr v) Source # | |
Defined in Math.Number.NumericExpression | |
VectorShow v => VectorShow (VectorSpaceExpr v) Source # | |
Defined in Math.Number.NumericExpression show_vector :: Show a => VectorSpaceExpr v a -> String Source # |
liftNumFrac1 :: forall {k} {v :: Type -> Type} {a} {v :: Type -> Type} {a :: k}. (NumExpr v a -> NumExpr v (FloatExpr v a)) -> a -> FloatExpr v a Source #
liftNumFrac2 :: forall {k} {v :: Type -> Type} {a} {v :: Type -> Type} {a} {v :: Type -> Type} {a :: k}. (NumExpr v a -> NumExpr v a -> NumExpr v (FloatExpr v a)) -> a -> a -> FloatExpr v a Source #
Instances
runEnumExpr :: Enum a => [a] -> EnumExpr a -> a Source #
runFracExpr :: (Fractional a, IdVisitor a) => [a] -> FracExpr v a -> a Source #
vecSpaceFold :: (Visitor (v a), VectorSpace b) => Fold (Var b) b -> Fold (NumExpr v a) (Scalar b) -> Fold (v a) b -> Fold (VectorSpaceExpr v a) b Source #
fracExprFold :: Fractional b => Fold (NumExpr v a) b -> Fold (FracExpr v a) b Source #