packages feed

commutative 0.0.1.4 → 0.0.2

raw patch · 5 files changed

+86/−51 lines, 5 filesdep +commutativedep +vectordep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: commutative, vector

Dependency ranges changed: base

API changes (from Hackage documentation)

- Data.Commutative: instance Data.Commutative.Commutative Data.Monoid.All
- Data.Commutative: instance Data.Commutative.Commutative Data.Monoid.Any
- Data.Commutative: instance Data.Commutative.CommutativeId Data.Monoid.All
- Data.Commutative: instance Data.Commutative.CommutativeId Data.Monoid.Any
- Data.Commutative: instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Monoid.Product a)
- Data.Commutative: instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Monoid.Sum a)
- Data.Commutative: instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Monoid.Product a)
- Data.Commutative: instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Monoid.Sum a)
- Data.Mergeable: instance Data.Mergeable.Mergeable1 Data.List.NonEmpty.NonEmpty
+ Data.Commutative: instance Data.Commutative.Commutative Data.Semigroup.Internal.All
+ Data.Commutative: instance Data.Commutative.Commutative Data.Semigroup.Internal.Any
+ Data.Commutative: instance Data.Commutative.CommutativeId Data.Semigroup.Internal.All
+ Data.Commutative: instance Data.Commutative.CommutativeId Data.Semigroup.Internal.Any
+ Data.Commutative: instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Semigroup.Internal.Product a)
+ Data.Commutative: instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Semigroup.Internal.Sum a)
+ Data.Commutative: instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Semigroup.Internal.Product a)
+ Data.Commutative: instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Semigroup.Internal.Sum a)
+ Data.Mergeable: instance Data.Mergeable.Mergeable Data.Vector.Vector
+ Data.Mergeable: instance Data.Mergeable.Mergeable1 GHC.Base.NonEmpty
- Data.Mergeable: class Mergeable t where mergeMap f = merge (commute . f) cempty merge f i xs = appCommEndo (mergeMap (CommEndo . f) xs) i
+ Data.Mergeable: class Mergeable t
- Data.Mergeable: class Functor t => Mergeable1 t where mergeMap1 f = merge1 . fmap f merge1 = mergeMap1 id
+ Data.Mergeable: class Functor t => Mergeable1 t

Files

+ README.md view
@@ -0,0 +1,9 @@+commutative+===========++> Semantics for commutative operations in Haskell++## Idea++There isn't a class for commutative binary operations, and this is a joke attempt+at making one.
commutative.cabal view
@@ -1,46 +1,65 @@-Name:                   commutative-Version:                0.0.1.4-Author:                 Athan Clark <athan.clark@gmail.com>-Maintainer:             Athan Clark <athan.clark@gmail.com>-License:                MIT-License-File:           LICENSE-Synopsis:               Commutative binary operations.-Description:-  This package provides a trivial class for abelian binary operations, and an-  analogue to @Data.Foldable@.-Cabal-Version:          >= 1.10-Build-Type:             Simple-Category:               Data, Math+cabal-version: 1.12 -Library-  Default-Language:     Haskell2010-  HS-Source-Dirs:       src-  GHC-Options:          -Wall-  Exposed-Modules:      Data.Commutative-                        Data.Mergeable-  Build-Depends:        base >= 4.6 && < 5-                      , random-                      , semigroups+-- This file has been generated from package.yaml by hpack version 0.31.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 8f796930aa20ab766d806a86a390a5cd89ed619ac06011638f5e905c7fb1df3f -Test-Suite spec-  Type:                 exitcode-stdio-1.0-  Default-Language:     Haskell2010-  Hs-Source-Dirs:       src-                      , test-  Ghc-Options:          -Wall-  Main-Is:              Main.hs-  Other-Modules:        Data.Commutative-                        Data.CommutativeSpec-                        Data.Mergeable-  Build-Depends:        base-                      , tasty-                      , tasty-quickcheck-                      , tasty-hunit-                      , QuickCheck-                      , quickcheck-instances-                      , random-                      , semigroups+name:           commutative+version:        0.0.2+synopsis:       Commutative binary operations.+description:    Please see the README on Github at <https://github.com/athanclark/commutative#readme>+category:       Data+homepage:       https://github.com/athanclark/commutative#readme+bug-reports:    https://github.com/athanclark/commutative/issues+author:         Athan Clark+maintainer:     athan.clark@localcooking.com+copyright:      2018 Athan Clark+license:        BSD3+license-file:   LICENSE+build-type:     Simple+extra-source-files:+    README.md -Source-Repository head-  Type:                 git-  Location:             https://github.com/athanclark/commutative.git+source-repository head+  type: git+  location: https://github.com/athanclark/commutative++library+  exposed-modules:+      Data.Commutative+      Data.Mergeable+  other-modules:+      Paths_commutative+  hs-source-dirs:+      src+  ghc-options: -Wall+  build-depends:+      base >=4.11 && <5.0+    , random+    , semigroups+    , vector+  default-language: Haskell2010++test-suite sets-test+  type: exitcode-stdio-1.0+  main-is: Main.hs+  other-modules:+      Data.CommutativeSpec+      Paths_commutative+  hs-source-dirs:+      test+  ghc-options: -Wall -threaded -rtsopts -Wall -with-rtsopts=-N+  build-depends:+      QuickCheck+    , base >=4.11 && <5.0+    , commutative+    , quickcheck-instances+    , random+    , semigroups+    , tasty+    , tasty-hunit+    , tasty-quickcheck+    , vector+  default-language: Haskell2010
src/Data/Commutative.hs view
@@ -15,6 +15,7 @@ import Control.Applicative import System.IO.Unsafe (unsafePerformIO) import System.Random (randomIO)+import qualified Data.Vector as Vector   class Commutative a where
src/Data/Mergeable.hs view
@@ -7,6 +7,7 @@  import Data.Commutative import Data.List.NonEmpty as NE+import qualified Data.Vector as Vector   class Mergeable t where@@ -19,6 +20,11 @@ instance Mergeable [] where   mergeMap _ [] = cempty   mergeMap f (x:xs) = f x <~> mergeMap f xs++instance Mergeable Vector.Vector where+  mergeMap f xss+    | Vector.null xss = cempty+    | otherwise = f (Vector.head xss) <~> mergeMap f (Vector.drop 1 xss)   class Functor t => Mergeable1 t where
test/Data/CommutativeSpec.hs view
@@ -56,20 +56,20 @@ instance Arbitrary a => Arbitrary (Under5 a) where   arbitrary = Under5 <$> arbitrary `suchThat` (\x -> length x < 5) -instance Arbitrary Any where-  arbitrary = Any <$> arbitrary+-- instance Arbitrary Any where+--   arbitrary = Any <$> arbitrary -instance Arbitrary All where-  arbitrary = All <$> arbitrary+-- instance Arbitrary All where+--   arbitrary = All <$> arbitrary  instance Arbitrary a => Arbitrary (OneOf a) where   arbitrary = OneOf <$> arbitrary -instance Arbitrary a => Arbitrary (Sum a) where-  arbitrary = Sum <$> arbitrary+-- instance Arbitrary a => Arbitrary (Sum a) where+--   arbitrary = Sum <$> arbitrary -instance Arbitrary a => Arbitrary (Product a) where-  arbitrary = Product <$> arbitrary+-- instance Arbitrary a => Arbitrary (Product a) where+--   arbitrary = Product <$> arbitrary  equal :: (Eq a, Foldable f) => f a -> Bool equal = maybe True snd