packages feed

numhask-range 0.1.3.0 → 0.2.0.0

raw patch · 9 files changed

+80/−67 lines, 9 filesdep +numhask-preludedep −numhaskdep ~base

Dependencies added: numhask-prelude

Dependencies removed: numhask

Dependency ranges changed: base

Files

numhask-range.cabal view
@@ -1,9 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.18.1.+-- This file has been generated from package.yaml by hpack version 0.20.0. -- -- see: https://github.com/sol/hpack+--+-- hash: 18003f857cbb0ea73a97f0e023bddf802e171ba3f01574bd3d203588fe2449f9  name:           numhask-range-version:        0.1.3.0+version:        0.2.0.0 synopsis:       Numbers that are range representations description:    Numbers that represent ranges of all sorts. category:       project@@ -28,14 +30,15 @@ library   hs-source-dirs:       src-  default-extensions: DeriveGeneric DeriveTraversable FlexibleContexts InstanceSigs MultiParamTypeClasses NegativeLiterals NoImplicitPrelude OverloadedStrings PatternSynonyms TypeFamilies UnicodeSyntax+  default-extensions: NegativeLiterals NoImplicitPrelude OverloadedStrings UnicodeSyntax+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints   build-depends:-      numhask >=0.1.3-    , base >=4.7 && <4.11-    , protolude-    , QuickCheck+      QuickCheck     , adjunctions+    , base >=4.7 && <4.12     , distributive+    , numhask-prelude >=0.0.1.0+    , protolude     , semigroupoids   exposed-modules:       NumHask.Space@@ -52,11 +55,14 @@   main-is: test.hs   hs-source-dirs:       test-  default-extensions: DeriveGeneric DeriveTraversable FlexibleContexts InstanceSigs MultiParamTypeClasses NegativeLiterals NoImplicitPrelude OverloadedStrings PatternSynonyms TypeFamilies UnicodeSyntax+  default-extensions: NegativeLiterals NoImplicitPrelude OverloadedStrings UnicodeSyntax+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints   build-depends:-      numhask >=0.1.3-    , base >=4.7 && <5+      base >=4.7 && <5     , doctest+    , numhask-prelude >=0.0.1.0     , numhask-range     , tasty+  other-modules:+      Paths_numhask_range   default-language: Haskell2010
readme.md view
@@ -12,7 +12,9 @@  If you ask yourself what a chart is, sifting through the cruft of accumulated practice, nomenclature and usage, digging deep for charting's essence, and if you ask the question in haskell, here's the simplest object you find: -[![unitSquare](https://tonyday567.github.io/other/unitSquare.svg)](https://tonyday567.github.io/other/unitSquare.svg)+++[![unitSquare](other/src_Diagrams_TwoD_Shapes_unitSquareEx.svg)](other/src_Diagrams_TwoD_Shapes_unitSquareEx.svg)  To a first approximation, charting is transforming and placing this unit on a physical XY plane, such as a screen, or on graph paper.  A rectangle is a distended square; a line is a very thin rectangle; a histogram is a series of rectangles, and axes are nothing more than a collection of squares. The main thing on a chart that isn't a square is text, but even then we use square pixels to render. 
src/NumHask/Pair.hs view
@@ -119,9 +119,12 @@ instance Traversable1 Pair where   traverse1 f (Pair a b) = Pair <$> f a Data.Functor.Apply.<.> f b +instance (Semigroup a) => Semigroup (Pair a) where+  (Pair a0 b0) <> (Pair a1 b1) = Pair (a0 <> a1) (b0 <> b1)+ instance (Monoid a) => Monoid (Pair a) where   mempty = Pair mempty mempty-  (Pair a0 b0) `mappend` (Pair a1 b1) = Pair (a0 `mappend` a1) (b0 `mappend` b1)+  mappend = (<>)  instance Distributive Pair where   collect f x = Pair (getL . f <$> x) (getR . f <$> x)@@ -191,7 +194,7 @@   sign (Pair a b) = Pair (sign a) (sign b)   abs (Pair a b) = Pair (abs a) (abs b) -instance (ExpField a, AdditiveGroup a, MultiplicativeUnital a) =>+instance (ExpField a, MultiplicativeUnital a) =>          Normed (Pair a) a where   size (Pair a b) = sqrt (a ** (one + one) + b ** (one + one)) 
src/NumHask/Range.hs view
@@ -152,20 +152,20 @@ half = one / two  -- | convex hull union-instance (FromInteger a, Ord a, BoundedField a) => AdditiveMagma (Range a) where+instance (Ord a) => AdditiveMagma (Range a) where     plus (Range l0 u0) (Range l1 u1) = Range (min l0 l1) (max u0 u1)  -instance (FromInteger a, Ord a, BoundedField a) => AdditiveUnital (Range a) where+instance (Ord a, BoundedField a) => AdditiveUnital (Range a) where     zero = Range infinity neginfinity -instance (FromInteger a, Ord a, BoundedField a) => AdditiveAssociative (Range a)+instance (Ord a) => AdditiveAssociative (Range a) -instance (FromInteger a, Ord a, BoundedField a) => AdditiveInvertible (Range a) where+instance (Ord a) => AdditiveInvertible (Range a) where     negate (Range l u) = Range u l -instance (FromInteger a, Ord a, BoundedField a) => AdditiveCommutative (Range a)-instance (FromInteger a, Ord a, BoundedField a) => Additive (Range a)-instance (FromInteger a, Ord a, BoundedField a) => AdditiveGroup (Range a)+instance (Ord a) => AdditiveCommutative (Range a)+instance (Ord a, BoundedField a) => Additive (Range a)+instance (Ord a, BoundedField a) => AdditiveGroup (Range a)  -- | times may well be some sort of affine projection lurking under the hood instance (FromInteger a, Ord a, BoundedField a) => MultiplicativeMagma (Range a) where@@ -208,7 +208,7 @@         | u' < l = l - u'         | otherwise = zero -instance (BoundedField a, Ord a, FromInteger a, Epsilon a) => Epsilon (Range a) where+instance (BoundedField a, Ord a, Epsilon a) => Epsilon (Range a) where     nearZero (Range l u) = nearZero (l - u)     aboutEqual (Range l u) (Range l' u')= aboutEqual l l' && aboutEqual u u' @@ -228,7 +228,7 @@     upper (Range _ u) = u     singleton a = Range a a     type Grid (Range a) = Int-    grid :: FromInteger a => Pos -> Range a -> Int -> [a]+    grid :: Pos -> Range a -> Int -> [a]     grid o s n = (+ if o==MidPos then step/(one+one) else zero) <$> posns       where         posns = (lower s +) . (step *) . fromIntegral <$> [i0..i1]@@ -243,13 +243,16 @@       where         ps = grid OuterPos r n +instance (Ord a, BoundedField a, FromInteger a) => Semigroup (Range a) where+    (<>) = union+ instance (Ord a, BoundedField a, FromInteger a) => Monoid (Range a) where     mempty = nul-    mappend = union+    mappend = (<>)  -- | turn a range into n `a`s pleasing to human sense and sensibility -- the `a`s may well lie outside the original range as a result-gridSensible :: (Fractional a, Ord a, FromInteger a, QuotientField a, ExpField a) =>+gridSensible :: (FromInteger a, Fractional a, Ord a, QuotientField a, ExpField a) =>     Pos -> Range a -> Int -> [a] gridSensible tp (Range l u) n =     (+ if tp==MidPos then step/two else zero) <$> posns
src/NumHask/RangeD.hs view
@@ -1,7 +1,11 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE ExtendedDefaultRules #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE MultiParamTypeClasses #-}
src/NumHask/Rect.hs view
@@ -103,56 +103,56 @@ instance Traversable1 Rect where   traverse1 f (Rect a b c d) = Rect <$> f a <.> f b <.> f c <.> f d -instance (Ord a, BoundedField a, FromInteger a) =>+instance (Ord a) =>          AdditiveMagma (Rect a) where   plus (Ranges x0 y0) (Ranges x1 y1) = Ranges (x0 `plus` x1) (y0 `plus` y1) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (Ord a, BoundedField a) =>          AdditiveUnital (Rect a) where   zero = Ranges zero zero -instance (Ord a, FromInteger a, BoundedField a) =>+instance (Ord a) =>          AdditiveAssociative (Rect a) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (Ord a) =>          AdditiveCommutative (Rect a) -instance (Ord a, FromInteger a, BoundedField a) =>+instance (Ord a) =>          AdditiveIdempotent (Rect a) -instance (Ord a, BoundedField a, FromInteger a) => Additive (Rect a)+instance (Ord a, BoundedField a) => Additive (Rect a) -instance (Ord a, FromInteger a, BoundedField a) =>+instance (Ord a) =>          AdditiveInvertible (Rect a) where   negate (Ranges x y) = Ranges (negate x) (negate y) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (Ord a, BoundedField a) =>          AdditiveGroup (Rect a) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeMagma (Rect a) where   times (Ranges x0 y0) (Ranges x1 y1) = Ranges (x0 `times` x1) (y0 `times` y1) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeUnital (Rect a) where   one = Ranges one one -instance (Ord a, FromInteger a, BoundedField a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeAssociative (Rect a) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeCommutative (Rect a) -instance (Ord a, BoundedField a, FromInteger a) => Multiplicative (Rect a)+instance (FromInteger a, Ord a, BoundedField a) => Multiplicative (Rect a) -instance (Ord a, FromInteger a, BoundedField a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeInvertible (Rect a) where   recip (Ranges x y) = Ranges (recip x) (recip y) -instance (Ord a, BoundedField a, FromInteger a) =>+instance (FromInteger a, Ord a, BoundedField a) =>          MultiplicativeGroup (Rect a) -instance (AdditiveInvertible a, BoundedField a, Ord a, FromInteger a) =>+instance (FromInteger a, AdditiveInvertible a, BoundedField a, Ord a) =>          Signed (Rect a) where   sign (Ranges l u) = Ranges (sign l) (sign u)   abs (Ranges l u) = Ranges (sign l * l) (sign u * u)@@ -160,7 +160,7 @@ instance (AdditiveGroup a) => Normed (Rect a) (Pair a) where   size (Ranges l u) = Pair (size l) (size u) -instance (BoundedField a, Ord a, FromInteger a, Epsilon a) => Epsilon (Rect a) where+instance (BoundedField a, Ord a, Epsilon a) => Epsilon (Rect a) where     nearZero (Ranges a b) = nearZero a && nearZero b     aboutEqual (Ranges a b) (Ranges a' b')= aboutEqual a a' && aboutEqual b b' @@ -182,7 +182,7 @@   index (Rect _ _ c _) (True, False) = c   index (Rect _ _ _ d) (True, True) = d -instance (Signed a, FromInteger a, Ord a, BoundedField a) => Space (Rect a) where+instance (FromInteger a, Signed a, Ord a, BoundedField a) => Space (Rect a) where   type Element (Rect a) = Pair a   nul = Ranges nul nul   union (Ranges a b) (Ranges c d) = Ranges (a `union` c) (b `union` d)@@ -190,7 +190,7 @@   upper (Rect _ u0 _ u1) = Pair u0 u1   singleton (Pair x y) = Rect x x y y   type Grid (Rect a) = Pair Int-  grid :: (FromInteger a) => Pos -> Rect a -> Pair Int -> [Pair a]+  grid :: Pos -> Rect a -> Pair Int -> [Pair a]   grid o s n =     (+ if o == MidPos          then step / (one + one)@@ -217,9 +217,12 @@       sx = width rX / fromIntegral stepX       sy = width rY / fromIntegral stepY -instance (Signed a, Ord a, BoundedField a, FromInteger a) => Monoid (Rect a) where+instance (FromInteger a, Signed a, Ord a, BoundedField a) => Semigroup (Rect a) where+  (<>) = union++instance (FromInteger a, Signed a, Ord a, BoundedField a) => Monoid (Rect a) where   mempty = nul-  mappend = union+  mappend = (<>)  instance (Arbitrary a) => Arbitrary (Rect a) where     arbitrary = do@@ -231,12 +234,12 @@   rnf (Ranges a b) = rnf a `seq` rnf b  -- | create a list of pairs representing the lower left and upper right cormners of a rectangle.-corners :: (Signed a, FromInteger a, BoundedField a, Ord a) => Rect a -> [Pair a]+corners :: (FromInteger a, Signed a, BoundedField a, Ord a) => Rect a -> [Pair a] corners r = [lower r, upper r]  -- | project a Rect from an old range to a new one projectRect ::-     (Signed a, FromInteger a, Ord a, BoundedField a)+     (FromInteger a, Signed a, Ord a, BoundedField a)   => Rect a   -> Rect a   -> Rect a
src/NumHask/Space.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wall #-} #if ( __GLASGOW_HASKELL__ < 820 )
stack.yaml view
@@ -1,6 +1,8 @@-resolver: nightly-2017-12-27+resolver: nightly-2018-04-05  packages:   - . -extra-deps: []+extra-deps:+  - numhask-prelude-0.0.1.0+  - numhask-0.2.0.0
test/test.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -Wall #-} {-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}@@ -56,11 +57,7 @@      , Signed (Element s)      , Ord (Element s)      , Normed s (Element s)-     , Signed s      , Space s-     , Epsilon s-     , Eq s-     , Multiplicative s      )   => Element s   -> [Law2 s (Element s)]@@ -84,14 +81,11 @@   ]  additiveSpaceFuzzyLaws ::-     ( Epsilon (Element s)-     , Signed (Element s)+     ( Signed (Element s)      , Ord (Element s)      , Normed s (Element s)      , Signed s-     , Space s      , Epsilon s-     , Eq s      )   => Element s   -> [Law s]@@ -110,14 +104,11 @@   ]  multiplicativeSpaceFuzzyLaws ::-     ( Epsilon (Element s)-     , Signed (Element s)+     ( Signed (Element s)      , Ord (Element s)      , Normed s (Element s)      , Signed s-     , Space s      , Epsilon s-     , Eq s      , Multiplicative s      )   => Element s@@ -135,14 +126,12 @@   ]  multiplicativeGroupSpaceFuzzyLaws ::-     ( Epsilon (Element s)-     , Signed (Element s)+     ( Signed (Element s)      , Ord (Element s)      , Normed s (Element s)      , Signed s      , Space s      , Epsilon s-     , Eq s      , MultiplicativeGroup s      )   => Element s@@ -163,10 +152,8 @@      , Ord a      , Normed (r a) a      , Signed (r a)-     , Multiplicative (r a)      , MultiplicativeGroup (r a)      , Epsilon (r a)-     , Eq (r a)      )   => a   -> [Law (r a)]@@ -224,7 +211,7 @@      ( Ord a      , Semiring a      , Epsilon a-     , Eq a)+     )   => [Law a] semiringFuzzyLaws = additiveLaws <> distributionFuzzyLaws