{-# LANGUAGE RebindableSyntax #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
module Algebra.VectorSpace where
import qualified Algebra.Module as Module
import qualified Algebra.Field as Field
import qualified Algebra.PrincipalIdealDomain as PID
import qualified Number.Ratio as Ratio
import qualified Data.Complex as Complex98
import qualified Prelude as P
class (Field.C a, Module.C a b) => C a b
instance C P.Float P.Float
instance C P.Double P.Double
instance (PID.C a) => C (Ratio.T a) (Ratio.T a)
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)
instance (C a b, P.RealFloat b) => C a (Complex98.Complex b)