module Numeric.Algebra.Space.SemivectorSpace
( SemivectorSpace,
)
where
import Data.Kind (Constraint, Type)
import Numeric.Algebra.Semifield (Semifield)
import Numeric.Algebra.Space.MSpace (MSpace)
import Numeric.Algebra.Space.Semimodule (Semimodule)
type SemivectorSpace :: Type -> Type -> Constraint
class (MSpace v k, Semifield k, Semimodule v k) => SemivectorSpace v k | v -> k
instance (Semifield k) => SemivectorSpace (k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k, k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k, k, k, k, k) k
instance (Semifield k) => SemivectorSpace (k, k, k, k, k, k, k, k, k) k