Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- newtype Dual a c = Dual {
- runDual :: (c -> a) -> a
- image' :: Semiring a => Foldable f => f (a, c) -> Dual a c
- (!*) :: Free f => Dual a (Rep f) -> f a -> a
- (*!) :: Free f => f a -> Dual a (Rep f) -> a
- toTran :: (b -> Dual a c) -> Tran a b c
- fromTran :: Tran a b c -> b -> Dual a c
- init :: Unital a b => b -> Dual a ()
- coinit :: Counital a c => Dual a c
- joined' :: Algebra a b => b -> Dual a (b, b)
- cojoined' :: Coalgebra a c => c -> c -> Dual a c
- convolve' :: Algebra a b => Coalgebra a c => (b -> Dual a c) -> (b -> Dual a c) -> b -> Dual a c
Linear functionals
Linear functionals from elements of a free semimodule to a scalar.
f!*
(x+
y) = (f!*
x)+
(f!*
y) f!*
(x.*
a) = a*
(f!*
x)
Caution: You must ensure these laws hold when using the default constructor.
Instances
image' :: Semiring a => Foldable f => f (a, c) -> Dual a c Source #
Create a Dual
from a linear combination of basis vectors.
>>>
image' [(2, E31),(3, E32)] !* V3 1 1 1 :: Int
5
(!*) :: Free f => Dual a (Rep f) -> f a -> a infixr 3 Source #
Apply a linear functional to a vector.
(*!) :: Free f => f a -> Dual a (Rep f) -> a infixl 3 Source #
Apply a linear functional to a vector.