-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Numbers that are range representations -- -- Numbers that represent ranges of all sorts. @package numhask-range @version 0.2.2.0 -- | I would have used V2 from the linear package, but wanted to avoid the -- lens dependency. And there's no canonical treatment out there. module NumHask.Pair -- | A pair of a's, implemented as a tuple, but api represented as a Pair -- of a's. -- --
--   >>> fmap (+1) (Pair 1 2)
--   Pair 2 3
--   
--   >>> pure one :: Pair Int
--   Pair 1 1
--   
--   >>> (*) <$> Pair 1 2 <*> pure 2
--   Pair 2 4
--   
--   >>> foldr (++) [] (Pair [1,2] [3])
--   [1,2,3]
--   
--   >>> Pair "a" "pair" `mappend` pure " " `mappend` Pair "string" "mappended"
--   Pair "a string" "pair mappended"
--   
-- -- As a Ring and Field class -- --
--   >>> Pair 0 1 + zero
--   Pair 0 1
--   
--   >>> Pair 0 1 + Pair 2 3
--   Pair 2 4
--   
--   >>> Pair 1 1 - one
--   Pair 0 0
--   
--   >>> Pair 0 1 * one
--   Pair 0 1
--   
--   >>> Pair 0 1 / one
--   Pair 0.0 1.0
--   
--   >>> Pair 11 12 `mod` (pure 6)
--   Pair 5 0
--   
-- -- As a numhask module -- --
--   >>> Pair 1 2 .+ 3
--   Pair 4 5
--   
-- -- representables -- --
--   >>> distribute [Pair 1 2, Pair 3 4]
--   Pair [1,3] [2,4]
--   
--   >>> index (Pair 'l' 'r') False
--   'l'
--   
newtype Pair a Pair' :: (a, a) -> Pair a -- | the preferred pattern instance GHC.Generics.Generic (NumHask.Pair.Pair a) instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.Pair.Pair a) instance GHC.Show.Show a => GHC.Show.Show (NumHask.Pair.Pair a) instance GHC.Base.Functor NumHask.Pair.Pair instance Data.Functor.Classes.Eq1 NumHask.Pair.Pair instance Data.Functor.Classes.Show1 NumHask.Pair.Pair instance Data.Functor.Bind.Class.Apply NumHask.Pair.Pair instance GHC.Base.Applicative NumHask.Pair.Pair instance GHC.Base.Monad NumHask.Pair.Pair instance Data.Foldable.Foldable NumHask.Pair.Pair instance Data.Semigroup.Foldable.Class.Foldable1 NumHask.Pair.Pair instance Data.Traversable.Traversable NumHask.Pair.Pair instance Data.Semigroup.Traversable.Class.Traversable1 NumHask.Pair.Pair instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (NumHask.Pair.Pair a) instance (Data.Semigroup.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (NumHask.Pair.Pair a) instance Data.Distributive.Distributive NumHask.Pair.Pair instance Data.Functor.Rep.Representable NumHask.Pair.Pair instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NumHask.Pair.Pair a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveMagma a => NumHask.Algebra.Additive.AdditiveMagma (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveUnital a => NumHask.Algebra.Additive.AdditiveUnital (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveMagma a => NumHask.Algebra.Additive.AdditiveAssociative (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveMagma a => NumHask.Algebra.Additive.AdditiveCommutative (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveUnital a => NumHask.Algebra.Additive.Additive (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.AdditiveInvertible a => NumHask.Algebra.Additive.AdditiveInvertible (NumHask.Pair.Pair a) instance (NumHask.Algebra.Additive.AdditiveUnital a, NumHask.Algebra.Additive.AdditiveInvertible a) => NumHask.Algebra.Additive.AdditiveGroup (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeMagma a => NumHask.Algebra.Multiplicative.MultiplicativeMagma (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeUnital a => NumHask.Algebra.Multiplicative.MultiplicativeUnital (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeMagma a => NumHask.Algebra.Multiplicative.MultiplicativeAssociative (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeMagma a => NumHask.Algebra.Multiplicative.MultiplicativeCommutative (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeUnital a => NumHask.Algebra.Multiplicative.Multiplicative (NumHask.Pair.Pair a) instance NumHask.Algebra.Multiplicative.MultiplicativeInvertible a => NumHask.Algebra.Multiplicative.MultiplicativeInvertible (NumHask.Pair.Pair a) instance (NumHask.Algebra.Multiplicative.MultiplicativeUnital a, NumHask.Algebra.Multiplicative.MultiplicativeInvertible a) => NumHask.Algebra.Multiplicative.MultiplicativeGroup (NumHask.Pair.Pair a) instance NumHask.Algebra.Integral.Integral a => NumHask.Algebra.Integral.Integral (NumHask.Pair.Pair a) instance NumHask.Algebra.Metric.Signed a => NumHask.Algebra.Metric.Signed (NumHask.Pair.Pair a) instance (NumHask.Algebra.Field.ExpField a, NumHask.Algebra.Metric.Normed a a, NumHask.Algebra.Multiplicative.MultiplicativeUnital a) => NumHask.Algebra.Metric.Normed (NumHask.Pair.Pair a) a instance (GHC.Classes.Eq a, GHC.Classes.Ord a, NumHask.Algebra.Metric.Signed a, NumHask.Algebra.Additive.Additive a) => GHC.Classes.Ord (NumHask.Pair.Pair a) instance NumHask.Algebra.Metric.Epsilon a => NumHask.Algebra.Metric.Epsilon (NumHask.Pair.Pair a) instance (NumHask.Algebra.Field.ExpField a, NumHask.Algebra.Metric.Normed a a) => NumHask.Algebra.Metric.Metric (NumHask.Pair.Pair a) a instance NumHask.Algebra.Distribution.Distribution a => NumHask.Algebra.Distribution.Distribution (NumHask.Pair.Pair a) instance NumHask.Algebra.Ring.Semiring a => NumHask.Algebra.Ring.Semiring (NumHask.Pair.Pair a) instance NumHask.Algebra.Ring.Ring a => NumHask.Algebra.Ring.Ring (NumHask.Pair.Pair a) instance NumHask.Algebra.Ring.CRing a => NumHask.Algebra.Ring.CRing (NumHask.Pair.Pair a) instance NumHask.Algebra.Field.Semifield a => NumHask.Algebra.Field.Semifield (NumHask.Pair.Pair a) instance NumHask.Algebra.Field.Field a => NumHask.Algebra.Field.Field (NumHask.Pair.Pair a) instance NumHask.Algebra.Field.ExpField a => NumHask.Algebra.Field.ExpField (NumHask.Pair.Pair a) instance NumHask.Algebra.Field.UpperBoundedField a => NumHask.Algebra.Field.UpperBoundedField (NumHask.Pair.Pair a) instance NumHask.Algebra.Field.LowerBoundedField a => NumHask.Algebra.Field.LowerBoundedField (NumHask.Pair.Pair a) instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Basis.AdditiveBasis NumHask.Pair.Pair a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Basis.AdditiveGroupBasis NumHask.Pair.Pair a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Basis.MultiplicativeBasis NumHask.Pair.Pair a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Basis.MultiplicativeGroupBasis NumHask.Pair.Pair a instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Module.AdditiveModule NumHask.Pair.Pair a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Module.AdditiveGroupModule NumHask.Pair.Pair a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Module.MultiplicativeModule NumHask.Pair.Pair a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Module.MultiplicativeGroupModule NumHask.Pair.Pair a instance NumHask.Algebra.Singleton.Singleton NumHask.Pair.Pair -- | A Space represents an abstract continuous range class for a -- type. The interval package is an alternative approach. module NumHask.Space -- | space laws -- --
--   a `union` nul == a
--   a `union` a == a
--   project o n (lower o) == lower n
--   project o n (upper o) == upper n
--   project a a == id
--   
class (Eq (Element s), Ord (Element s), Field (Element s)) => Space s where { type family Element s :: *; type family Grid s :: *; } -- | lower boundary of space lower :: Space s => s -> Element s -- | upper boundary of space upper :: Space s => s -> Element s -- | mid-point of the space mid :: Space s => s -> Element s -- | distance between boundaries width :: Space s => s -> Element s -- | singleton space singleton :: Space s => Element s -> s -- | zero-width test singular :: Space s => s -> Bool -- | determine whether an a is in the space element :: Space s => Element s -> s -> Bool -- | is a space contained within another? contains :: Space s => s -> s -> Bool -- | do two spaces intersect? disjoint :: Space s => s -> s -> Bool -- | do two spaces intersect? intersects :: Space s => s -> s -> Bool -- | convex hull union :: Space s => s -> s -> s -- | null space, which can be interpreted as mempty nul :: Space s => s -- | the containing space of a Foldable space :: (Space s, (Foldable f)) => f (Element s) -> s -- | project a data point from an old range to a new range project :: Space s => s -> s -> Element s -> Element s -- | create equally-spaced as from a space grid :: Space s => Pos -> s -> Grid s -> [Element s] -- | create equally-spaced `Space a`s from a space gridSpace :: Space s => s -> Grid s -> [s] -- | Pos suggests where data points are placed on a grid across a range. -- Pos can also be thought about as whether the lower and upper points on -- the range are open or closed (plus the mid-point as an extra option). data Pos OuterPos :: Pos InnerPos :: Pos LowerPos :: Pos UpperPos :: Pos MidPos :: Pos instance GHC.Classes.Eq NumHask.Space.Pos instance GHC.Generics.Generic NumHask.Space.Pos instance GHC.Show.Show NumHask.Space.Pos -- | representation of a continuous range of a type module NumHask.Range -- | A continuous range over type a -- --
--   >>> let a = Range (-1) 1
--   
--   >>> a
--   Range -1 1
--   
--   >>> fmap (+1) (Range 1 2)
--   Range 2 3
--   
--   >>> one :: Range Double
--   Range -0.5 0.5
--   
--   >>> zero :: Range Double
--   Range Infinity -Infinity
--   
-- -- as a Field instance -- --
--   >>> Range 0 1 + zero
--   Range 0.0 1.0
--   
--   >>> Range 0 1 + Range 2 3
--   Range 0.0 3.0
--   
--   >>> Range 1 1 - one
--   Range 0.5 1.0
--   
--   >>> Range 0 1 * one
--   Range 0.0 1.0
--   
--   >>> Range 0 1 / one
--   Range 0.0 1.0
--   
--   >>> P.singleton 2.3 :: Range Double
--   Range 2.3 2.3
--   
--   >>> abs (Range 1 0)
--   Range 0.0 1.0
--   
--   >>> sign (Range 1 0) == negate one
--   True
--   
-- -- Idempotent -- --
--   >>> Range 0 2 + Range 0 2
--   Range 0.0 2.0
--   
-- -- as a space instance -- --
--   >>> project (Range 0 1) (Range 1 4) 0.5
--   2.5
--   
--   >>> grid OuterPos (Range 0 10) 5
--   [0.0,2.0,4.0,6.0,8.0,10.0]
--   
--   >>> gridSpace (Range 0 1) 4
--   [Range 0.0 0.25,Range 0.25 0.5,Range 0.5 0.75,Range 0.75 1.0]
--   
--   >>> gridSensible OuterPos (Range (-12) 23) 6
--   [-10.0,-5.0,0.0,5.0,10.0,15.0,20.0]
--   
newtype Range a Range' :: (a, a) -> Range a -- | A tuple is the preferred concrete implementation of a Range, due to -- many libraries having substantial optimizations for tuples already (eg -- Vector). 'Pattern Synonyms' allow us to recover a constructor -- without the need for tuple syntax. -- | turn a range into n as pleasing to human sense and -- sensibility the as may well lie outside the original range as -- a result gridSensible :: (FromInteger a, Fractional a, QuotientField a, ExpField a) => Pos -> Range a -> Int -> [a] instance GHC.Generics.Generic (NumHask.Range.Range a) instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.Range.Range a) instance GHC.Show.Show a => GHC.Show.Show (NumHask.Range.Range a) instance Data.Functor.Classes.Eq1 NumHask.Range.Range instance Data.Functor.Classes.Show1 NumHask.Range.Range instance GHC.Base.Functor NumHask.Range.Range instance Data.Functor.Bind.Class.Apply NumHask.Range.Range instance GHC.Base.Applicative NumHask.Range.Range instance GHC.Base.Monad NumHask.Range.Range instance Data.Foldable.Foldable NumHask.Range.Range instance Data.Semigroup.Foldable.Class.Foldable1 NumHask.Range.Range instance Data.Traversable.Traversable NumHask.Range.Range instance Data.Semigroup.Traversable.Class.Traversable1 NumHask.Range.Range instance Data.Distributive.Distributive NumHask.Range.Range instance Data.Functor.Rep.Representable NumHask.Range.Range instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NumHask.Range.Range a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NumHask.Range.Range a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveMagma (NumHask.Range.Range a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveUnital (NumHask.Range.Range a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveAssociative (NumHask.Range.Range a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveInvertible (NumHask.Range.Range a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveCommutative (NumHask.Range.Range a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.Additive (NumHask.Range.Range a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveGroup (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeMagma (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeUnital (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeAssociative (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeInvertible (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeCommutative (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.Multiplicative (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeGroup (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, NumHask.Algebra.Additive.AdditiveInvertible a, NumHask.Algebra.Field.BoundedField a, GHC.Classes.Ord a) => NumHask.Algebra.Metric.Signed (NumHask.Range.Range a) instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Metric.Normed (NumHask.Range.Range a) a instance (GHC.Classes.Ord a, NumHask.Algebra.Additive.AdditiveGroup a) => NumHask.Algebra.Metric.Metric (NumHask.Range.Range a) a instance (NumHask.Algebra.Field.BoundedField a, GHC.Classes.Ord a, NumHask.Algebra.Metric.Epsilon a) => NumHask.Algebra.Metric.Epsilon (NumHask.Range.Range a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Space.Space (NumHask.Range.Range a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a, NumHask.Algebra.Integral.FromInteger a) => Data.Semigroup.Semigroup (NumHask.Range.Range a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a, NumHask.Algebra.Integral.FromInteger a) => GHC.Base.Monoid (NumHask.Range.Range a) instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Basis.AdditiveBasis NumHask.Range.Range a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Basis.AdditiveGroupBasis NumHask.Range.Range a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Basis.MultiplicativeBasis NumHask.Range.Range a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Basis.MultiplicativeGroupBasis NumHask.Range.Range a instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Module.AdditiveModule NumHask.Range.Range a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Module.AdditiveGroupModule NumHask.Range.Range a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Module.MultiplicativeModule NumHask.Range.Range a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Module.MultiplicativeGroupModule NumHask.Range.Range a instance NumHask.Algebra.Singleton.Singleton NumHask.Range.Range instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a, NumHask.Algebra.Integral.FromInteger a) => GHC.Classes.Ord (NumHask.Range.Range a) -- | a two-dimensional plane, implemented as a composite of a Pair -- of Ranges. module NumHask.Rect -- | a Pair of Ranges that form a rectangle in what is often -- thought of as the XY plane. -- --
--   >>> let a = Rect (-1) 1 (-2) 4
--   
--   >>> a
--   Rect -1 1 -2 4
--   
--   >>> let (Ranges x y) = a
--   
--   >>> x
--   Range -1 1
--   
--   >>> y
--   Range -2 4
--   
--   >>> fmap (+1) (Rect 1 2 3 4)
--   Rect 2 3 4 5
--   
--   >>> one :: Rect Double
--   Rect -0.5 0.5 -0.5 0.5
--   
--   >>> zero :: Rect Double
--   Rect Infinity -Infinity Infinity -Infinity
--   
-- -- as a Field instance -- --
--   >>> Rect 0 1 2 3 + zero
--   Rect 0.0 1.0 2.0 3.0
--   
--   >>> Rect 0 1 (-2) (-1) + Rect 2 3 (-5) 3
--   Rect 0.0 3.0 -5.0 3.0
--   
--   >>> Rect 1 1 1 1 - one
--   Rect 0.5 1.0 0.5 1.0
--   
--   >>> Rect 0 1 0 1 * one
--   Rect 0.0 1.0 0.0 1.0
--   
--   >>> Rect 0 1 0 1 / one
--   Rect 0.0 1.0 0.0 1.0
--   
--   >>> singleton (Pair 1.0 2.0) :: Rect Double
--   Rect 1.0 1.0 2.0 2.0
--   
--   >>> abs (Rect 1 0 1 0)
--   Rect 0.0 1.0 0.0 1.0
--   
--   >>> sign (Rect 1 0 1 0) == negate one
--   True
--   
-- -- as a Space instance -- --
--   >>> project (Rect 0 1 (-1) 0) (Rect 1 4 10 0) (Pair 0.5 1)
--   Pair 2.5 -10.0
--   
--   >>> gridSpace (Rect 0 10 0 1) (Pair 2 2)
--   [Rect 0.0 5.0 0.0 0.5,Rect 0.0 5.0 0.5 1.0,Rect 5.0 10.0 0.0 0.5,Rect 5.0 10.0 0.5 1.0]
--   
--   >>> grid MidPos (Rect 0 10 0 1) (Pair 2 2)
--   [Pair 2.5 0.25,Pair 2.5 0.75,Pair 7.5 0.25,Pair 7.5 0.75]
--   
newtype Rect a Rect' :: (Compose Pair Range a) -> Rect a -- | pattern of Rect lowerx upperx lowery uppery -- | pattern of Ranges xrange yrange -- | create a list of pairs representing the lower left and upper right -- cormners of a rectangle. corners :: (FromInteger a, Signed a, BoundedField a, Ord a) => Rect a -> [Pair a] -- | project a Rect from an old range to a new one projectRect :: (FromInteger a, Signed a, Ord a, BoundedField a) => Rect a -> Rect a -> Rect a -> Rect a instance GHC.Generics.Generic (NumHask.Rect.Rect a) instance Data.Traversable.Traversable NumHask.Rect.Rect instance Data.Semigroup.Foldable.Class.Foldable1 NumHask.Rect.Rect instance Data.Foldable.Foldable NumHask.Rect.Rect instance GHC.Base.Applicative NumHask.Rect.Rect instance Data.Functor.Bind.Class.Apply NumHask.Rect.Rect instance GHC.Base.Functor NumHask.Rect.Rect instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.Rect.Rect a) instance GHC.Show.Show a => GHC.Show.Show (NumHask.Rect.Rect a) instance Data.Semigroup.Traversable.Class.Traversable1 NumHask.Rect.Rect instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveMagma (NumHask.Rect.Rect a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveUnital (NumHask.Rect.Rect a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveAssociative (NumHask.Rect.Rect a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveCommutative (NumHask.Rect.Rect a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveIdempotent (NumHask.Rect.Rect a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.Additive (NumHask.Rect.Rect a) instance GHC.Classes.Ord a => NumHask.Algebra.Additive.AdditiveInvertible (NumHask.Rect.Rect a) instance (GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveGroup (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeMagma (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeUnital (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeAssociative (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeCommutative (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.Multiplicative (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeInvertible (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeGroup (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, NumHask.Algebra.Additive.AdditiveInvertible a, NumHask.Algebra.Field.BoundedField a, GHC.Classes.Ord a) => NumHask.Algebra.Metric.Signed (NumHask.Rect.Rect a) instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Metric.Normed (NumHask.Rect.Rect a) (NumHask.Pair.Pair a) instance (NumHask.Algebra.Field.BoundedField a, GHC.Classes.Ord a, NumHask.Algebra.Metric.Epsilon a) => NumHask.Algebra.Metric.Epsilon (NumHask.Rect.Rect a) instance Data.Distributive.Distributive NumHask.Rect.Rect instance Data.Functor.Rep.Representable NumHask.Rect.Rect instance (NumHask.Algebra.Integral.FromInteger a, NumHask.Algebra.Metric.Signed a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Space.Space (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, NumHask.Algebra.Metric.Signed a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => Data.Semigroup.Semigroup (NumHask.Rect.Rect a) instance (NumHask.Algebra.Integral.FromInteger a, NumHask.Algebra.Metric.Signed a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => GHC.Base.Monoid (NumHask.Rect.Rect a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NumHask.Rect.Rect a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NumHask.Rect.Rect a) instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Basis.AdditiveBasis NumHask.Rect.Rect a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Basis.AdditiveGroupBasis NumHask.Rect.Rect a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Basis.MultiplicativeBasis NumHask.Rect.Rect a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Basis.MultiplicativeGroupBasis NumHask.Rect.Rect a instance NumHask.Algebra.Additive.Additive a => NumHask.Algebra.Module.AdditiveModule NumHask.Rect.Rect a instance NumHask.Algebra.Additive.AdditiveGroup a => NumHask.Algebra.Module.AdditiveGroupModule NumHask.Rect.Rect a instance NumHask.Algebra.Multiplicative.Multiplicative a => NumHask.Algebra.Module.MultiplicativeModule NumHask.Rect.Rect a instance NumHask.Algebra.Multiplicative.MultiplicativeGroup a => NumHask.Algebra.Module.MultiplicativeGroupModule NumHask.Rect.Rect a instance NumHask.Algebra.Singleton.Singleton NumHask.Rect.Rect -- | representation of a possibly discontinuous range module NumHask.RangeD newtype RangeD a RangeD :: [Range a] -> RangeD a normalise :: (Ord (Range a), Ord a, BoundedField a, FromInteger a) => RangeD a -> RangeD a instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NumHask.RangeD.RangeD a) instance Data.Traversable.Traversable NumHask.RangeD.RangeD instance Data.Foldable.Foldable NumHask.RangeD.RangeD instance GHC.Base.Functor NumHask.RangeD.RangeD instance GHC.Show.Show a => GHC.Show.Show (NumHask.RangeD.RangeD a) instance GHC.Generics.Generic (NumHask.RangeD.RangeD a) instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.RangeD.RangeD a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveMagma (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveUnital (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveAssociative (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveInvertible (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveCommutative (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.Additive (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Additive.AdditiveGroup (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeMagma (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeUnital (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeAssociative (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeInvertible (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeCommutative (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.Multiplicative (NumHask.RangeD.RangeD a) instance (NumHask.Algebra.Integral.FromInteger a, GHC.Classes.Ord a, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Multiplicative.MultiplicativeGroup (NumHask.RangeD.RangeD a)