-- 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