papa-include (empty) → 0.1.0
raw patch · 10 files changed
+406/−0 lines, 10 filesdep +QuickCheckdep +basedep +directorybuild-type:Customsetup-changed
Dependencies added: QuickCheck, base, directory, doctest, filepath, lens, semigroupoids, semigroups, template-haskell
Files
- LICENSE +77/−0
- Setup.lhs +44/−0
- changelog +4/−0
- papa-include.cabal +74/−0
- src/Papa/Include.hs +11/−0
- src/Papa/Include/Data/Functor/Apply.hs +34/−0
- src/Papa/Include/Data/Functor/Bind.hs +42/−0
- src/Papa/Include/Data/List.hs +72/−0
- src/Papa/Include/Data/Semigroupoid.hs +16/−0
- test/doctests.hs +32/−0
+ LICENSE view
@@ -0,0 +1,77 @@+CSIRO Open Source Software License Agreement (variation of the BSD / MIT+License)++Copyright (c) 2016, Commonwealth Scientific and Industrial Research Organisation+(CSIRO) ABN 41 687 119 230.++All rights reserved. CSIRO is willing to grant you a license to this+aemo-webservice on the following terms, except where otherwise indicated for+third party material.++Redistribution and use of this software in source and binary forms, with or+without modification, are permitted provided that the following conditions are+met:++* Redistributions of source code must retain the above copyright notice, this+ list of conditions and the following disclaimer.++* Redistributions in binary form must reproduce the above copyright notice, this+ list of conditions and the following disclaimer in the documentation and/or+ other materials provided with the distribution.++* Neither the name of CSIRO nor the names of its contributors may be used to+ endorse or promote products derived from this software without specific prior+ written permission of CSIRO.++EXCEPT AS EXPRESSLY STATED IN THIS AGREEMENT AND TO THE FULL EXTENT PERMITTED BY+APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS-IS". CSIRO MAKES NO+REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED,+INCLUDING BUT NOT LIMITED TO ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS+REGARDING THE CONTENTS OR ACCURACY OF THE SOFTWARE, OR OF TITLE,+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, THE ABSENCE+OF LATENT OR OTHER DEFECTS, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT+DISCOVERABLE.++TO THE FULL EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL CSIRO BE+LIABLE ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, IN AN ACTION FOR+BREACH OF CONTRACT, NEGLIGENCE OR OTHERWISE) FOR ANY CLAIM, LOSS, DAMAGES OR+OTHER LIABILITY HOWSOEVER INCURRED. WITHOUT LIMITING THE SCOPE OF THE PREVIOUS+SENTENCE THE EXCLUSION OF LIABILITY SHALL INCLUDE: LOSS OF PRODUCTION OR+OPERATION TIME, LOSS, DAMAGE OR CORRUPTION OF DATA OR RECORDS; OR LOSS OF+ANTICIPATED SAVINGS, OPPORTUNITY, REVENUE, PROFIT OR GOODWILL, OR OTHER ECONOMIC+LOSS; OR ANY SPECIAL, INCIDENTAL, INDIRECT, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY+DAMAGES, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, ACCESS OF THE+SOFTWARE OR ANY OTHER DEALINGS WITH THE SOFTWARE, EVEN IF CSIRO HAS BEEN ADVISED+OF THE POSSIBILITY OF SUCH CLAIM, LOSS, DAMAGES OR OTHER LIABILITY.++APPLICABLE LEGISLATION SUCH AS THE AUSTRALIAN CONSUMER LAW MAY APPLY+REPRESENTATIONS, WARRANTIES, OR CONDITIONS, OR IMPOSES OBLIGATIONS OR LIABILITY+ON CSIRO THAT CANNOT BE EXCLUDED, RESTRICTED OR MODIFIED TO THE FULL EXTENT SET+OUT IN THE EXPRESS TERMS OF THIS CLAUSE ABOVE "CONSUMER GUARANTEES". TO THE+EXTENT THAT SUCH CONSUMER GUARANTEES CONTINUE TO APPLY, THEN TO THE FULL EXTENT+PERMITTED BY THE APPLICABLE LEGISLATION, THE LIABILITY OF CSIRO UNDER THE+RELEVANT CONSUMER GUARANTEE IS LIMITED (WHERE PERMITTED AT CSIRO'S OPTION) TO+ONE OF FOLLOWING REMEDIES OR SUBSTANTIALLY EQUIVALENT REMEDIES:++(a) THE REPLACEMENT OF THE SOFTWARE, THE SUPPLY OF EQUIVALENT+ SOFTWARE, OR SUPPLYING RELEVANT SERVICES AGAIN;+(b) THE REPAIR OF THE SOFTWARE;+(c) THE PAYMENT OF THE COST OF REPLACING THE+ SOFTWARE, OF ACQUIRING EQUIVALENT SOFTWARE, HAVING THE+ RELEVANT SERVICES SUPPLIED AGAIN, OR HAVING THE SOFTWARE+ REPAIRED.++IN THIS CLAUSE, CSIRO INCLUDES ANY THIRD PARTY AUTHOR OR OWNER OF ANY PART OF+THE SOFTWARE OR MATERIAL DISTRIBUTED WITH IT. CSIRO MAY ENFORCE ANY RIGHTS ON+BEHALF OF THE RELEVANT THIRD PARTY.++Third Party Components++The following third party components are distributed with the Software. You+agree to comply with the license terms for these components as part of accessing+the Software. Other third party software may also be identified in separate+files distributed with the Software.++___________________________________________________________________++___________________________________________________________________
+ Setup.lhs view
@@ -0,0 +1,44 @@+#!/usr/bin/env runhaskell+\begin{code}+{-# OPTIONS_GHC -Wall #-}+module Main (main) where++import Data.List ( nub )+import Data.Version ( showVersion )+import Distribution.Package ( PackageName(PackageName), PackageId, InstalledPackageId, packageVersion, packageName )+import Distribution.PackageDescription ( PackageDescription(), TestSuite(..) )+import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )+import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose )+import Distribution.Simple.BuildPaths ( autogenModulesDir )+import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), fromFlag )+import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )+import Distribution.Verbosity ( Verbosity )+import System.FilePath ( (</>) )++main :: IO ()+main = defaultMainWithHooks simpleUserHooks+ { buildHook = \pkg lbi hooks flags -> do+ generateBuildModule (fromFlag (buildVerbosity flags)) pkg lbi+ buildHook simpleUserHooks pkg lbi hooks flags+ }++generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()+generateBuildModule verbosity pkg lbi = do+ let dir = autogenModulesDir lbi+ createDirectoryIfMissingVerbose verbosity True dir+ withLibLBI pkg lbi $ \_ libcfg -> do+ withTestLBI pkg lbi $ \suite suitecfg -> do+ rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines+ [ "module Build_" ++ testName suite ++ " where"+ , "deps :: [String]"+ , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg))+ ]+ where+ formatdeps = map (formatone . snd)+ formatone p = case packageName p of+ PackageName n -> n ++ "-" ++ showVersion (packageVersion p)++testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]+testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys++\end{code}
+ changelog view
@@ -0,0 +1,4 @@+0.1.0++* Reorganisation of all `papa` packages.+* Initial release.
+ papa-include.cabal view
@@ -0,0 +1,74 @@+name: papa-include+version: 0.1.0+license: BSD3+license-file: LICENSE+author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+maintainer: Tony Morris+copyright: Copyright (c) 2016, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230.+synopsis: Third party libraries+category: Prelude+description: Third party libraries+homepage: https://github.com/data61/papa-include+bug-reports: https://github.com/data61/papa-include/issues+cabal-version: >= 1.10+build-type: Custom+extra-source-files: changelog++source-repository head+ type: git+ location: git@github.com:data61/papa-include.git++flag small_base+ description: Choose the new, split-up base package.++library+ default-language:+ Haskell2010++ build-depends:+ base >= 4.8 && < 5+ , lens >= 4.1 && < 5+ , semigroups >= 0.14 && < 1+ , semigroupoids >= 5 && < 6+ + ghc-options:+ -Wall++ default-extensions:+ NoImplicitPrelude++ hs-source-dirs:+ src++ exposed-modules:+ Papa.Include+ Papa.Include.Data.List+ Papa.Include.Data.Functor.Apply+ Papa.Include.Data.Functor.Bind+ Papa.Include.Data.Semigroupoid+++test-suite doctests+ type:+ exitcode-stdio-1.0++ main-is:+ doctests.hs++ default-language:+ Haskell2010++ build-depends:+ base < 5 && >= 3+ , doctest >= 0.9.7+ , filepath >= 1.3+ , directory >= 1.1+ , QuickCheck >= 2.0+ , template-haskell >= 2.8++ ghc-options:+ -Wall+ -threaded++ hs-source-dirs:+ test
+ src/Papa/Include.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Include(+ module P+) where++import Control.Lens as P+import Papa.Include.Data.List as P+import Papa.Include.Data.Functor.Apply as P+import Papa.Include.Data.Functor.Bind as P+import Papa.Include.Data.Semigroupoid as P
+ src/Papa/Include/Data/Functor/Apply.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Include.Data.Functor.Apply(+ (*>)+, (>>)+, (<*)+, Apply+) where++import Data.Functor.Bind(Apply, (.>), (<.))++(*>) ::+ Apply f =>+ f a+ -> f b+ -> f b+(*>) =+ (.>)++(>>) ::+ Apply f =>+ f a+ -> f b+ -> f b+(>>) =+ (.>)++(<*) ::+ Apply f =>+ f b+ -> f a+ -> f b+(<*) =+ (<.)
+ src/Papa/Include/Data/Functor/Bind.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Include.Data.Functor.Bind(+ concat+, concatMap+, (>>=)+, (=<<)+, Bind+) where++import Data.Functor.Bind(Bind((>>-)), (-<<), join)++concat ::+ Bind f =>+ f (f a)+ -> f a+concat =+ join++concatMap ::+ Bind f =>+ (a -> f b)+ -> f a+ -> f b+concatMap =+ (-<<)++(>>=) ::+ Bind f =>+ f a+ -> (a -> f b)+ -> f b+(>>=) =+ (>>-)++(=<<) ::+ Bind f =>+ (a -> f b)+ -> f a+ -> f b+(=<<) =+ (-<<)
+ src/Papa/Include/Data/List.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Include.Data.List(+ maximum+, minimum+, (++)+, mappend+, foldr1+, foldl1+, foldl1'+, scanr+, scanl+, Semigroup+, Ord+, NonEmpty((:|))+) where+ +import Data.List.NonEmpty(NonEmpty((:|)), scanr, scanl)+import Data.Foldable(foldr, foldl, foldl')+import Data.Ord(Ord, max, min)+import Data.Semigroup(Semigroup((<>)))++maximum ::+ Ord a =>+ NonEmpty a+ -> a+maximum (h :| t) =+ foldr max h t++minimum ::+ Ord a =>+ NonEmpty a+ -> a+minimum (h :| t) =+ foldr min h t++(++) ::+ Semigroup a =>+ a+ -> a+ -> a+(++) =+ (<>)+ +mappend ::+ Semigroup a =>+ a+ -> a+ -> a+mappend =+ (<>)++foldr1 ::+ (a -> a -> a)+ -> NonEmpty a+ -> a+foldr1 f (h :| t) =+ foldr f h t++foldl1 ::+ (a -> a -> a)+ -> NonEmpty a+ -> a+foldl1 f (h :| t) =+ foldl f h t++foldl1' ::+ (a -> a -> a)+ -> NonEmpty a+ -> a+foldl1' f (h :| t) =+ foldl' f h t
+ src/Papa/Include/Data/Semigroupoid.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Papa.Include.Data.Semigroupoid(+ (.)+, Semigroupoid+) where++import Data.Semigroupoid(Semigroupoid(o))++(.) ::+ Semigroupoid cat =>+ cat b c+ -> cat a b+ -> cat a c+(.) =+ o
+ test/doctests.hs view
@@ -0,0 +1,32 @@+module Main where++import Build_doctests (deps)+import Control.Applicative+import Control.Monad+import Data.List+import System.Directory+import System.FilePath+import Test.DocTest++main ::+ IO ()+main =+ getSources >>= \sources -> doctest $+ "-isrc"+ : "-idist/build/autogen"+ : "-optP-include"+ : "-optPdist/build/autogen/cabal_macros.h"+ : "-hide-all-packages"+ : map ("-package="++) deps ++ sources++getSources :: IO [FilePath]+getSources = filter (isSuffixOf ".hs") <$> go "src"+ where+ go dir = do+ (dirs, files) <- getFilesAndDirectories dir+ (files ++) . concat <$> mapM go dirs++getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])+getFilesAndDirectories dir = do+ c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir+ (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c