{-# LANGUAGE TemplateHaskell #-}
module Numeric.MixedTypes.Field
(
CanAddSubMulDivBy, Field, OrderedField, OrderedCertainlyField
, module Numeric.MixedTypes.Div
)
where
import Numeric.MixedTypes.PreludeHiding
import Numeric.CollectErrors ( CN )
import Numeric.MixedTypes.Literals
import Numeric.MixedTypes.Ord
import Numeric.MixedTypes.Ring
import Numeric.MixedTypes.Div
import Numeric.MixedTypes.Power
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)