{-# 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)