{-# OPTIONS -fno-implicit-prelude -fglasgow-exts #-} module Algebra.VectorSpace where import qualified Algebra.Module import qualified Algebra.Field as Field -- import NumericPrelude import qualified Prelude as P class (Field.C a, Algebra.Module.C a b) => C a b {-* Instances for atomic types -} instance C P.Float P.Float instance C P.Double P.Double {-* Instances for composed types -} instance (C a b0, C a b1) => C a (b0, b1) instance (C a b0, C a b1, C a b2) => C a (b0, b1, b2) instance (C a b) => C a [b] instance (C a b) => C a (c -> b)