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