{-# LANGUAGE TemplateHaskell #-} {-| Module : Numeric.MixedType.Field Description : Bottom-up typed division Copyright : (c) Michal Konecny License : BSD3 Maintainer : mikkonecny@gmail.com Stability : experimental Portability : portable -} module Numeric.MixedTypes.Field ( -- * Field CanAddSubMulDivBy, Field, OrderedField, OrderedCertainlyField -- * Division , module Numeric.MixedTypes.Div ) where import Numeric.MixedTypes.PreludeHiding -- import qualified Prelude as P import Numeric.CollectErrors ( CN ) -- import qualified Numeric.CollectErrors as CN import Numeric.MixedTypes.Literals -- import Numeric.MixedTypes.Bool -- import Numeric.MixedTypes.Eq import Numeric.MixedTypes.Ord -- import Numeric.MixedTypes.MinMaxAbs -- import Numeric.MixedTypes.AddSub import Numeric.MixedTypes.Ring import Numeric.MixedTypes.Div import Numeric.MixedTypes.Power {----- Field -----} type CanAddSubMulDivBy t s = (CanAddSubMulBy t s, CanAddSubMulBy t s, CanDivBy t s) class (Ring t, HasRationals t, CanPowBy t Integer, CanPowBy t Int, CanDivSameType t, CanRecipSameType t, CanAddSubMulDivBy t Rational, CanAddSubMulDivBy t Integer, CanAddSubMulDivBy t Int ) => Field t instance Field Rational instance Field (CN Rational) class (Field t, OrderedRing t, HasOrder t Rational, HasOrder t Rational) => OrderedField t instance OrderedField Rational instance OrderedField (CN Rational) class (Field t, OrderedCertainlyRing t, HasOrderCertainly t Rational, HasOrderCertainly t Rational) => OrderedCertainlyField t instance OrderedCertainlyField Rational instance OrderedCertainlyField (CN Rational)