module Numeric.Algebra.Space.Semimodule
( Semimodule,
)
where
import Data.Kind (Constraint, Type)
import Numeric.Algebra.Additive.AMonoid (AMonoid)
import Numeric.Algebra.Semiring (Semiring)
import Numeric.Algebra.Space.MSemiSpace (MSemiSpace)
type Semimodule :: Type -> Type -> Constraint
class (AMonoid m, MSemiSpace m r, Semiring r) => Semimodule m r | m -> r
instance (Semiring r) => Semimodule (r, r) r
instance (Semiring r) => Semimodule (r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r, r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r, r, r, r, r) r
instance (Semiring r) => Semimodule (r, r, r, r, r, r, r, r, r) r