step-function 0.2 → 0.2.0.1
raw patch · 4 files changed
+111/−56 lines, 4 filesdep +semigroupsdep −base-compat-batteriesdep ~basedep ~deepseq
Dependencies added: semigroups
Dependencies removed: base-compat-batteries
Dependency ranges changed: base, deepseq
Files
- src/Data/Function/Step.hs +19/−4
- src/Data/Function/Step/Discrete/Closed.hs +22/−8
- src/Data/Function/Step/Discrete/Open.hs +17/−3
- step-function.cabal +53/−41
src/Data/Function/Step.hs view
@@ -42,17 +42,27 @@ putSF, ) where -import Control.Applicative (liftA2)+import Control.Applicative (Applicative (pure, (<*>)), liftA2, (<$>)) import Control.DeepSeq (NFData (..)) import Control.Monad (ap) import Data.Functor.Classes import Data.List (intercalate) import Data.Map (Map)-import Prelude ()-import Prelude.Compat +import Prelude+ (Eq (..), Functor, IO, Maybe (..), Monad (..), Ord (..), Ordering (..),+ Show (..), String, fst, length, map, otherwise, putStrLn, replicate,+ uncurry, ($), (++), (-), (.))++import Data.Foldable (Foldable, foldr, maximum)+import Data.Monoid (Monoid (..))+import Data.Semigroup (Semigroup (..))+import Data.Traversable (Traversable (traverse))+ #ifdef LIFTED_FUNCTOR_CLASSES import Text.Show (showListWith)+#else+import Prelude (showChar, showParen, showString) #endif import qualified Data.Map as Map@@ -97,7 +107,7 @@ -- Following property holds, i.e. 'SF' and ordinary function 'Applicative' instances -- are compatible (and '!' is a homomorphism). ----- prop> liftA2 f g h ! x == liftA2 f (g !) (h !) x+-- prop> liftA2 (applyFun2 f) g h ! x == liftA2 (applyFun2 f :: A -> B -> C) (g !) (h !) (x :: Int) -- -- Recall that for ordinary functions @'liftA2' f g h x = f (g x) (h x)@. --@@ -369,6 +379,11 @@ putSF = putStrLn . showSF -- $setup+--+-- >>> import Test.QuickCheck (applyFun2)+-- >>> import Test.QuickCheck.Poly (A, B, C)+-- >>> import Control.Applicative (liftA2, pure)+-- >>> import Data.Semigroup (Semigroup (..)) -- -- == Examples --
src/Data/Function/Step/Discrete/Closed.hs view
@@ -44,18 +44,28 @@ putSF, ) where -import Control.Applicative (liftA2)-import Control.DeepSeq (NFData (..))-import Control.Monad (ap)-import Data.Maybe (mapMaybe)+import Control.Applicative (Applicative (pure, (<*>)), liftA2, (<$>))+import Control.DeepSeq (NFData (..))+import Control.Monad (ap) import Data.Functor.Classes-import Data.List (intercalate)-import Data.Map (Map)-import Prelude ()-import Prelude.Compat+import Data.List (intercalate)+import Data.Map (Map)+import Data.Maybe (mapMaybe) +import Prelude+ (Eq (..), Functor (fmap), IO, Maybe (..), Monad (..), Ord (..),+ Show (..), String, fst, id, length, map, min, otherwise, putStrLn,+ replicate, uncurry, ($), (++), (-), (.))++import Data.Foldable (Foldable, foldr, maximum)+import Data.Monoid (Monoid (..))+import Data.Semigroup (Semigroup (..))+import Data.Traversable (Traversable)+ #ifdef LIFTED_FUNCTOR_CLASSES import Text.Show (showListWith)+#else+import Prelude (showChar, showParen, showString) #endif import qualified Data.Function.Step as SF@@ -341,6 +351,10 @@ putSF = putStrLn . showSF -- $setup+--+-- >>> import Control.Applicative (liftA2, pure)+-- >>> import qualified Data.Function.Step as SF+-- >>> import Data.Semigroup (Semigroup (..)) -- -- == Examples --
src/Data/Function/Step/Discrete/Open.hs view
@@ -44,18 +44,28 @@ putSF, ) where -import Control.Applicative (liftA2)+import Control.Applicative (Applicative (pure, (<*>)), liftA2, (<$>)) import Control.DeepSeq (NFData (..)) import Control.Monad (ap) import Data.Functor.Classes import Data.List (intercalate) import Data.Map (Map) import Data.Maybe (mapMaybe)-import Prelude ()-import Prelude.Compat +import Prelude+ (Eq (..), Functor (fmap), IO, Maybe (..), Monad (..), Ord (..),+ Show (..), String, fst, id, length, map, min, otherwise, putStrLn,+ replicate, uncurry, ($), (++), (-), (.))++import Data.Foldable (Foldable, foldr, maximum)+import Data.Monoid (Monoid (..))+import Data.Semigroup (Semigroup (..))+import Data.Traversable (Traversable)+ #ifdef LIFTED_FUNCTOR_CLASSES import Text.Show (showListWith)+#else+import Prelude (showChar, showParen, showString) #endif import qualified Data.Function.Step as SF@@ -340,6 +350,10 @@ putSF = putStrLn . showSF -- $setup+--+-- >>> import Control.Applicative (liftA2, pure)+-- >>> import qualified Data.Function.Step as SF+-- >>> import Data.Semigroup (Semigroup (..)) -- -- == Examples --
step-function.cabal view
@@ -1,36 +1,44 @@-cabal-version: >= 1.10-name: step-function-version: 0.2--synopsis: Staircase functions or piecewise constant functions-category: Text+cabal-version: >=1.10+name: step-function+version: 0.2.0.1+synopsis: Staircase functions or piecewise constant functions+category: Text description: Step functions, staircase functions or piecewise constant functions. Implemented as a default value and a series of transitions. Supports merging two step functions using a supplied merging function. . -homepage: https://github.com/jonpetterbergman/step-function-bug-reports: https://github.com/jonpetterbergman/stepfunction/issues-author: Oleg Grenrus <oleg.grenrus@iki.fi>, Petter Bergman <jon.petter.bergman@gmail.com>-maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>-license: BSD3-license-file: LICENSE-build-type: Simple+homepage: https://github.com/jonpetterbergman/step-function+bug-reports: https://github.com/jonpetterbergman/stepfunction/issues+author:+ Oleg Grenrus <oleg.grenrus@iki.fi>, Petter Bergman <jon.petter.bergman@gmail.com>++maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>+license: BSD3+license-file: LICENSE+build-type: Simple extra-source-files:- README.md Changelog.md+ README.md tested-with:- GHC==7.6.3- GHC==7.8.4- GHC==7.10.3- GHC==8.0.2- GHC==8.2.2- GHC==8.4.2+ GHC ==7.6.3+ || ==7.8.4+ || ==7.10.3+ || ==8.0.2+ || ==8.2.2+ || ==8.4.4+ || ==8.6.5+ || ==8.8.4+ || ==8.10.7+ || ==9.0.2+ || ==9.2.7+ || ==9.4.4+ || ==9.6.1 source-repository head- type: git+ type: git location: https://github.com/jonpetterbergman/step-function library@@ -38,41 +46,45 @@ ghc-options: -Wall hs-source-dirs: src build-depends:- base >=4.6 && <4.12,- base-compat-batteries >=0.10.1 && <0.11,- deepseq >=1.3.0.1 && <1.5,- containers >=0.5.0.0 && <0.6,- QuickCheck >=2.11.3 && <2.12+ base >=4.6 && <4.19+ , containers >=0.5.0.0 && <0.7+ , deepseq >=1.3.0.1 && <1.5+ , QuickCheck >=2.11.3 && <2.15 - if !impl(ghc >= 8.0)+ if !impl(ghc >=8.0)+ build-depends: semigroups >=0.18.4 && <0.20++ if !impl(ghc >=8.0) -- We enforce the fact that with GHC-7.10 -- we have at least transformers-0.4.2.0 (the bundled one) -- which has 'Data.Functor.Classes' module. (transformers-0.3 doesn't have)- if impl(ghc >= 7.10)- build-depends:- transformers >=0.4.2.0 && <0.6+ if impl(ghc >=7.10)+ build-depends: transformers >=0.4.2.0 && <0.7+ else build-depends:- transformers >=0.3.0.0 && <0.6,- transformers-compat >=0.6.2 && <0.7+ transformers >=0.3.0.0 && <0.7+ , transformers-compat >=0.6.2 && <0.8 other-extensions:- DeriveFunctor DeriveFoldable+ DeriveFunctor DeriveTraversable OverloadedStrings+ exposed-modules: Data.Function.Step Data.Function.Step.Discrete- Data.Function.Step.Discrete.Open Data.Function.Step.Discrete.Closed+ Data.Function.Step.Discrete.Open test-suite merge- type: exitcode-stdio-1.0- main-is: Merge.hs+ type: exitcode-stdio-1.0+ main-is: Merge.hs build-depends:- base,- step-function,- QuickCheck- hs-source-dirs: test- default-language: Haskell2010+ base+ , QuickCheck+ , step-function++ hs-source-dirs: test+ default-language: Haskell2010