-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Commutative binary operations. -- -- Please see the README on Github at -- https://github.com/athanclark/commutative#readme @package commutative @version 0.0.2 module Data.Commutative class Commutative a commute :: Commutative a => a -> a -> a (<~>) :: Commutative a => a -> a -> a class Commutative a => CommutativeId a cempty :: CommutativeId a => a -- | flip when False - simple & pure "predicative" -- commute. commuteVia :: Bool -> (a -> a -> a) -> a -> a -> a -- | Lifted predicative behaviour. commuteViaF :: Functor f => f Bool -> (a -> a -> a) -> a -> a -> f a -- | Endomorphisms commutative over composition. Warning: The -- Commutative instance uses unsafePerformIO to -- randomly pick the order. newtype CommEndo a CommEndo :: (a -> a) -> CommEndo a [appCommEndo] :: CommEndo a -> a -> a -- | In the case of two Just values, the commutative instance -- randomly chooses one of them. Warning: The Commutative -- instance uses unsafePerformIO to randomly pick the order. newtype OneOf a OneOf :: Maybe a -> OneOf a [getOneOf] :: OneOf a -> Maybe a pick1 :: a -> a -> a instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Commutative.OneOf a) instance GHC.Show.Show a => GHC.Show.Show (Data.Commutative.OneOf a) instance Data.Commutative.Commutative (Data.Commutative.OneOf a) instance Data.Commutative.CommutativeId (Data.Commutative.OneOf a) instance Data.Commutative.Commutative (Data.Commutative.CommEndo a) instance Data.Commutative.CommutativeId (Data.Commutative.CommEndo a) instance Data.Commutative.CommutativeId () instance Data.Commutative.CommutativeId Data.Semigroup.Internal.Any instance Data.Commutative.CommutativeId Data.Semigroup.Internal.All instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Semigroup.Internal.Sum a) instance GHC.Num.Num a => Data.Commutative.CommutativeId (Data.Semigroup.Internal.Product a) instance Data.Commutative.Commutative () instance Data.Commutative.Commutative Data.Semigroup.Internal.Any instance Data.Commutative.Commutative Data.Semigroup.Internal.All instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Semigroup.Internal.Sum a) instance GHC.Num.Num a => Data.Commutative.Commutative (Data.Semigroup.Internal.Product a) module Data.Mergeable class Mergeable t mergeMap :: (Mergeable t, CommutativeId m) => (a -> m) -> t a -> m merge :: Mergeable t => (a -> b -> b) -> b -> t a -> b class Functor t => Mergeable1 t mergeMap1 :: (Mergeable1 t, Commutative m) => (a -> m) -> t a -> m merge1 :: (Mergeable1 t, Commutative m) => t m -> m instance Data.Mergeable.Mergeable1 GHC.Base.NonEmpty instance Data.Mergeable.Mergeable [] instance Data.Mergeable.Mergeable Data.Vector.Vector