papa-base-implement 0.2.0 → 0.3.0
raw patch · 7 files changed
+61/−133 lines, 7 filesdep +papa-base-exportdep +semigroupsdep ~basenew-uploader
Dependencies added: papa-base-export, semigroups
Dependency ranges changed: base
Files
- changelog +0/−3
- changelog.md +3/−0
- papa-base-implement.cabal +15/−10
- src/Papa/Base/Implement.hs +1/−1
- src/Papa/Base/Implement/Control/Applicative.hs +27/−8
- src/Papa/Base/Implement/Data/Bool.hs +0/−111
- src/Papa/Base/Implement/Data/Functor.hs +15/−0
− changelog
@@ -1,3 +0,0 @@-0.2.0--* Initial release.
+ changelog.md view
@@ -0,0 +1,3 @@+0.2.0++* Initial release.
papa-base-implement.cabal view
@@ -1,22 +1,25 @@ name: papa-base-implement-version: 0.2.0+version: 0.3.0 license: BSD3 license-file: LICENSE-author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>-maintainer: Tony Morris+author: Queensland Functional Programming Lab <oᴉ˙ldɟb@llǝʞsɐɥ>+maintainer: Queensland Functional Programming Lab <oᴉ˙ldɟb@llǝʞsɐɥ> copyright: Copyright (c) 2017, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230. synopsis: Useful base functions reimplemented category: Prelude-description: Useful base functions reimplemented-homepage: https://github.com/data61/papa-base-implement-bug-reports: https://github.com/data61/papa-base-implement/issues+description:+ <<http://i.imgur.com/uZnp9ke.png>>+ .+ Useful base functions reimplemented+homepage: https://github.com/qfpl/papa+bug-reports: https://github.com/qfpl/papa/issues cabal-version: >= 1.10 build-type: Custom-extra-source-files: changelog+extra-source-files: changelog.md source-repository head type: git- location: git@github.com:data61/papa-base-implement.git+ location: git@github.com:qfpl/papa.git flag small_base description: Choose the new, split-up base package.@@ -27,7 +30,9 @@ build-depends: base >= 4.8 && < 5- + , semigroups >= 0.18+ , papa-base-export >= 0.3.0 && < 1+ ghc-options: -Wall @@ -41,9 +46,9 @@ Papa.Base.Implement Papa.Base.Implement.Control.Applicative Papa.Base.Implement.Control.Monad- Papa.Base.Implement.Data.Bool Papa.Base.Implement.Data.Foldable Papa.Base.Implement.Data.Function+ Papa.Base.Implement.Data.Functor Papa.Base.Implement.Data.List Papa.Base.Implement.Data.Monoid Papa.Base.Implement.Data.Traversable
src/Papa/Base/Implement.hs view
@@ -6,8 +6,8 @@ import Papa.Base.Implement.Control.Applicative as P import Papa.Base.Implement.Control.Monad as P-import Papa.Base.Implement.Data.Bool as P import Papa.Base.Implement.Data.Foldable as P+import Papa.Base.Implement.Data.Functor as P import Papa.Base.Implement.Data.Function as P import Papa.Base.Implement.Data.List as P import Papa.Base.Implement.Data.Monoid as P
src/Papa/Base/Implement/Control/Applicative.hs view
@@ -2,11 +2,15 @@ module Papa.Base.Implement.Control.Applicative( const-, return+, replicateA+, replicateA_ ) where -import Control.Applicative(Applicative(pure))+import Control.Applicative(Applicative(pure), liftA2, (*>))+import Control.Monad (replicateM, replicateM_) +import Papa.Base.Export.Prelude (Int, Maybe, IO, (-), (<=), otherwise)+ const :: Applicative f => a@@ -14,9 +18,24 @@ const = pure -return ::- Applicative f =>- a- -> f a-return =- pure+replicateA :: (Applicative f) => Int -> f a -> f [a]+{-# INLINABLE replicateA #-}+{-# SPECIALISE replicateA :: Int -> IO a -> IO [a] #-}+{-# SPECIALISE replicateA :: Int -> Maybe a -> Maybe [a] #-}+replicateA cnt0 f =+ loop cnt0+ where+ loop cnt+ | cnt <= 0 = pure []+ | otherwise = liftA2 (:) f (loop (cnt - 1))++replicateA_ :: (Applicative f) => Int -> f a -> f ()+{-# INLINABLE replicateA_ #-}+{-# SPECIALISE replicateA_ :: Int -> IO a -> IO () #-}+{-# SPECIALISE replicateA_ :: Int -> Maybe a -> Maybe () #-}+replicateA_ cnt0 f =+ loop cnt0+ where+ loop cnt+ | cnt <= 0 = pure ()+ | otherwise = f *> loop (cnt - 1)
− src/Papa/Base/Implement/Data/Bool.hs
@@ -1,111 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}--module Papa.Base.Implement.Data.Bool(- if'-, (?.)-, (.?)-, (?<>)-, (<>?)-, (?<*>)-, (<*>?)-, (<||>)-, (<&&>)-) where--import Control.Applicative(Applicative(pure))-import Control.Category(Category(id))-import Control.Monad(Monad)-import Data.Bool(Bool(False, True), not)-import Data.Monoid--if' ::- Bool- -> a- -> a- -> a-if' True t _ =- t-if' False _ f =- f--(?.) ::- Category c =>- c a a- -> Bool- -> c a a-f ?. False =- f-_ ?. True =- id--(.?) ::- Category c =>- c a a- -> Bool- -> c a a-(.?) x y =- (?.) x (not y)--(?<>) ::- Monoid a =>- a- -> Bool- -> a-f ?<> False =- f-_ ?<> True =- mempty--(<>?) ::- Monoid a =>- a- -> Bool- -> a-(<>?) x y =- (?<>) x (not y)--(?<*>) ::- Applicative f =>- (a -> f a)- -> Bool- -> a- -> f a-f ?<*> False =- f-_ ?<*> True =- pure--(<*>?) ::- Applicative f =>- (a -> f a)- -> Bool- -> a- -> f a-(<*>?) x y =- (?<*>) x (not y)--(<||>) ::- Monad m =>- m Bool ->- m Bool ->- m Bool-p <||> q =- do p' <- p- if p'- then- pure True- else- q--(<&&>) ::- Monad m =>- m Bool ->- m Bool ->- m Bool-p <&&> q =- do p' <- p- if p'- then- q- else- pure False
+ src/Papa/Base/Implement/Data/Functor.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Base.Implement.Data.Functor(+ map+) where++import Data.Functor(Functor(fmap))++map ::+ Functor f =>+ (a -> b)+ -> f a+ -> f b+map =+ fmap