-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Functions for detecting duplicates -- -- Functions for detecting duplicates in a list @package ordering-duplicates @version 0.1.0 module Data.Ord.Ordering newtype OrderT b f a OrderT :: (a -> a -> f b) -> OrderT b f a type Order b a = OrderT b Identity a order :: Iso (Order b a) (Order b a) (a -> a -> b) (a -> a -> b) class AsOrdering a _Ordering :: AsOrdering a => Prism' a Ordering _LT :: AsOrdering a => Prism' a () _EQ :: AsOrdering a => Prism' a () _GT :: AsOrdering a => Prism' a () class HasOrdering a ordering :: HasOrdering a => Lens' a Ordering -- |
--   >>> view order lt 1 1 :: Ordering
--   LT
--   
-- --
--   >>> view order lt 1 2 :: Ordering
--   LT
--   
-- --
--   >>> view order lt 2 1 :: Ordering
--   LT
--   
-- --
--   \x y -> (view order lt x y :: Ordering) == LT
--   
-- -- +++ OK, passed 100 tests. lt :: (Applicative f, AsOrdering b) => OrderT b f a -- |
--   >>> isLT LT
--   True
--   
-- --
--   >>> isLT GT
--   False
--   
-- --
--   >>> isLT EQ
--   False
--   
isLT :: AsOrdering a => a -> Bool -- |
--   >>> ifLT 1 2 LT
--   2
--   
--   >>> ifLT 1 2 GT
--   1
--   
--   >>> ifLT 1 2 EQ
--   1
--   
ifLT :: AsOrdering x => a -> a -> x -> a -- |
--   >>> view order eq 1 1 :: Ordering
--   EQ
--   
-- --
--   >>> view order eq 1 2 :: Ordering
--   EQ
--   
-- --
--   >>> view order eq 2 1 :: Ordering
--   EQ
--   
-- --
--   \x y -> (view order eq x y :: Ordering) == EQ
--   
-- -- +++ OK, passed 100 tests. eq :: (Applicative f, AsOrdering b) => OrderT b f a -- |
--   >>> isEQ LT
--   False
--   
-- --
--   >>> isEQ GT
--   False
--   
-- --
--   >>> isEQ EQ
--   True
--   
isEQ :: AsOrdering a => a -> Bool -- |
--   >>> ifEQ 1 2 LT
--   1
--   
--   >>> ifEQ 1 2 GT
--   1
--   
--   >>> ifEQ 1 2 EQ
--   2
--   
ifEQ :: AsOrdering x => a -> a -> x -> a -- |
--   >>> view order gt 1 1 :: Ordering
--   GT
--   
-- --
--   >>> view order gt 1 2 :: Ordering
--   GT
--   
-- --
--   >>> view order gt 2 1 :: Ordering
--   GT
--   
-- --
--   \x y -> (view order gt x y :: Ordering) == GT
--   
-- -- +++ OK, passed 100 tests. gt :: (Applicative f, AsOrdering b) => OrderT b f a -- |
--   >>> isGT LT
--   False
--   
-- --
--   >>> isGT GT
--   True
--   
-- --
--   >>> isGT EQ
--   False
--   
isGT :: AsOrdering a => a -> Bool -- |
--   >>> ifGT 1 2 LT
--   1
--   
--   >>> ifGT 1 2 GT
--   2
--   
--   >>> ifGT 1 2 EQ
--   1
--   
ifGT :: AsOrdering x => a -> a -> x -> a -- |
--   \x y -> view order ordOrder x y == x `compare` y
--   
-- -- +++ OK, passed 100 tests. ordOrder :: (Ord a, AsOrdering b, Applicative f) => OrderT b f a newtype MonadOrderT a f b MonadOrderT :: OrderT b f a -> MonadOrderT a f b monadOrder :: Iso (OrderT b f a) (OrderT b' f' a') (MonadOrderT a f b) (MonadOrderT a' f' b') argument1 :: Applicative f => MonadOrderT a f a argument2 :: Applicative f => MonadOrderT a f a newtype ProfunctorOrderT f a b ProfunctorOrderT :: OrderT b f a -> ProfunctorOrderT f a b profunctorOrder :: Iso (OrderT b f a) (OrderT b' f' a') (ProfunctorOrderT f a b) (ProfunctorOrderT f' a' b') appendOrder :: (Applicative f, Semigroup x) => OrderT x f x listOrder :: (Applicative f, AsOrdering b, Semigroup b) => OrderT b f a -> OrderT b f [a] bothOrder :: (Applicative f, Semigroup b) => (a -> f b) -> OrderT b f a bothOrder' :: Semigroup b => (a -> b) -> Order b a -- |
--   >>> getPredicate (orderL _1 (Predicate even)) (1, "a")
--   False
--   
-- --
--   >>> getPredicate (orderL _1 (Predicate even)) (2, "a")
--   True
--   
-- --
--   >>> view order (orderL _1 ordOrder) (1, "a") (2, "b") :: Ordering
--   LT
--   
-- --
--   >>> view order (orderL _1 ordOrder) (2, "a") (1, "b") :: Ordering
--   GT
--   
-- --
--   >>> view order (orderL _1 ordOrder) (1, "a") (1, "b") :: Ordering
--   EQ
--   
orderL :: Contravariant f => Getting a s a -> f a -> f s -- |
--   >>> view order (ordOrderL _1) (1, "a") (2, "b") :: Ordering
--   LT
--   
-- --
--   >>> view order (ordOrderL _1) (2, "a") (1, "b") :: Ordering
--   GT
--   
-- --
--   >>> view order (ordOrderL _1) (1, "a") (1, "b") :: Ordering
--   EQ
--   
ordOrderL :: (Ord a, AsOrdering b) => Getting a s a -> Order b s -- |
--   >>> getPredicate (orderS (state (\s -> (1, reverse s))) (Predicate even)) "abc"
--   False
--   
-- --
--   >>> getPredicate (orderS (state (\s -> (2, reverse s))) (Predicate even)) "abc"
--   True
--   
-- --
--   >>> view order (orderS (state (\s -> (s + 1, s * 2))) ordOrder) 5 6 :: Ordering
--   LT
--   
-- --
--   >>> view order (orderS (state (\s -> (s + 1, s * 2))) ordOrder) 5 4 :: Ordering
--   GT
--   
-- --
--   >>> view order (orderS (state (\s -> (s + 1, s * 2))) ordOrder) 5 5 :: Ordering
--   EQ
--   
orderS :: Contravariant f => State a b -> f b -> f a -- |
--   >>> view order (ordOrderS (state (\s -> (s + 1, s * 2)))) 5 6 :: Ordering
--   LT
--   
-- --
--   >>> view order (ordOrderS (state (\s -> (s + 1, s * 2)))) 5 4 :: Ordering
--   GT
--   
-- --
--   >>> view order (ordOrderS (state (\s -> (s + 1, s * 2)))) 5 5 :: Ordering
--   EQ
--   
ordOrderS :: (Ord x, AsOrdering b) => State a x -> Order b a -- |
--   >>> getPredicate (orderR (reader (\r -> r + 1)) (Predicate even)) 1
--   True
--   
-- --
--   >>> getPredicate (orderR (reader (\r -> r + 1)) (Predicate even)) 2
--   False
--   
-- --
--   >>> view order (orderR (reader (\r -> r + 1)) ordOrder) 1 0 :: Ordering
--   GT
--   
-- --
--   >>> view order (orderR (reader (\r -> r + 1)) ordOrder) 1 2 :: Ordering
--   LT
--   
-- --
--   >>> view order (orderR (reader (\r -> r + 1)) ordOrder) 2 1 :: Ordering
--   GT
--   
orderR :: Contravariant f => Reader a b -> f b -> f a -- |
--   >>> view order (ordOrderR (reader (\r -> r + 1))) 1 0 :: Ordering
--   GT
--   
-- --
--   >>> view order (ordOrderR (reader (\r -> r + 1))) 1 2 :: Ordering
--   LT
--   
-- --
--   >>> view order (ordOrderR (reader (\r -> r + 1))) 2 1 :: Ordering
--   GT
--   
ordOrderR :: (Ord x, AsOrdering b, Applicative f) => Reader a x -> OrderT b f a -- |
--   >>> perRest (OrderT (\a1 a2 -> if a1 == 5 then Nothing else Just (a1 `compare` a2))) [5,1,2,3,5,6]
--   Nothing
--   
-- --
--   >>> perRest (OrderT (\a1 a2 -> if a1 == 5 then Nothing else Just (a1 `compare` a2))) [5,1,2,3,6]
--   Just [(5,LT),(1,GT),(2,GT),(3,GT),(6,EQ)]
--   
-- --
--   >>> perRest (OrderT (\a1 a2 -> if a1 == 0 then Nothing else Just (a1 `compare` a2))) [5,1,2,3,6]
--   Just [(5,LT),(1,GT),(2,GT),(3,GT),(6,EQ)]
--   
-- --
--   >>> perRest (OrderT (\a1 a2 -> if a1 == 0 then Nothing else Just (a1 `compare` a2))) [4,5,1,2,3,6]
--   Just [(4,GT),(5,LT),(1,GT),(2,GT),(3,GT),(6,EQ)]
--   
perRest :: (Applicative f, Monoid x) => OrderT x f a -> [a] -> f [(a, x)] -- |
--   >>> perRest' ordOrder [1,2,3,1,3,2,4] :: [(Int, Ordering)]
--   [(1,GT),(2,GT),(3,LT),(1,GT),(3,LT),(2,GT),(4,EQ)]
--   
perRest' :: Monoid x => Order x a -> [a] -> [(a, x)] -- | Returns a list of all elements in a list with at least one duplicate -- (equal according to Order) in the remainder of the list. -- --
--   >>> runIdentity (duplicates (ordOrder :: Order Ordering Int) [])
--   []
--   
-- --
--   >>> runIdentity (duplicates (ordOrder :: Order Ordering Int) [1..10])
--   []
--   
-- --
--   >>> runIdentity (duplicates (ordOrder :: Order Ordering Int) [1,2,3,1])
--   [(1,1 :| [])]
--   
-- --
--   >>> runIdentity (duplicates (ordOrder :: Order Ordering Int) [1,2,3,1,4,5,1])
--   [(1,1 :| [1]),(1,1 :| [])]
--   
-- --
--   >>> runIdentity (duplicates (ordOrder :: Order Ordering Int) [1,2,3,1,4,5,1,2,6,7,2,1])
--   [(1,1 :| [1,1]),(2,2 :| [2]),(1,1 :| [1]),(1,1 :| []),(2,2 :| [])]
--   
duplicates :: (Monad f, AsOrdering b) => OrderT b f a -> [a] -> f [(a, NonEmpty a)] -- | Returns a list of all elements in a list with at least one duplicate -- (equal according to Order) in the remainder of the list. -- --
--   >>> duplicates' (ordOrder :: Order Ordering Int) []
--   []
--   
-- --
--   >>> duplicates' (ordOrder :: Order Ordering Int) [1..10]
--   []
--   
-- --
--   >>> duplicates' (ordOrder :: Order Ordering Int) [1,2,3,1]
--   [(1,1 :| [])]
--   
-- --
--   >>> duplicates' (ordOrder :: Order Ordering Int) [1,2,3,1,4,5,1]
--   [(1,1 :| [1]),(1,1 :| [])]
--   
-- --
--   >>> duplicates' (ordOrder :: Order Ordering Int) [1,2,3,1,4,5,1,2,6,7,2,1]
--   [(1,1 :| [1,1]),(2,2 :| [2]),(1,1 :| [1]),(1,1 :| []),(2,2 :| [])]
--   
duplicates' :: AsOrdering b => Order b a -> [a] -> [(a, NonEmpty a)] -- | Asserts that the two given values (by the Eq instance) are equal in -- the Order regardless of the function of the Order -- --
--   >>> view order (areEqual 1 2 ordOrder) 3 4 :: Ordering
--   LT
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 4 3 :: Ordering
--   GT
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 3 3 :: Ordering
--   EQ
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 1 3 :: Ordering
--   LT
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 2 3 :: Ordering
--   LT
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 1 2 :: Ordering
--   EQ
--   
-- --
--   >>> view order (areEqual 1 2 ordOrder) 2 1 :: Ordering
--   EQ
--   
areEqual :: (Functor f, Eq a, AsOrdering b) => a -> a -> OrderT b f a -> OrderT b f a -- | An alias for areEqual. (.===.) :: (Applicative f, Ord a, AsOrdering b) => a -> a -> OrderT b f a instance GHC.Base.Functor f => Data.Profunctor.Unsafe.Profunctor (Data.Ord.Ordering.ProfunctorOrderT f) instance GHC.Base.Applicative f => Data.Profunctor.Choice.Choice (Data.Ord.Ordering.ProfunctorOrderT f) instance GHC.Base.Functor f => GHC.Base.Functor (Data.Ord.Ordering.ProfunctorOrderT f a) instance Data.Functor.Bind.Class.Apply f => Data.Functor.Bind.Class.Apply (Data.Ord.Ordering.ProfunctorOrderT f a) instance GHC.Base.Applicative f => GHC.Base.Applicative (Data.Ord.Ordering.ProfunctorOrderT f a) instance Data.Functor.Bind.Class.Bind f => Data.Functor.Bind.Class.Bind (Data.Ord.Ordering.ProfunctorOrderT f a) instance GHC.Base.Monad f => GHC.Base.Monad (Data.Ord.Ordering.ProfunctorOrderT f a) instance Data.Functor.Alt.Alt f => Data.Functor.Alt.Alt (Data.Ord.Ordering.ProfunctorOrderT f a) instance GHC.Base.Alternative f => GHC.Base.Alternative (Data.Ord.Ordering.ProfunctorOrderT f a) instance Control.Monad.IO.Class.MonadIO f => Control.Monad.IO.Class.MonadIO (Data.Ord.Ordering.ProfunctorOrderT f a) instance GHC.Base.Functor f => GHC.Base.Functor (Data.Ord.Ordering.MonadOrderT a f) instance Data.Functor.Bind.Class.Apply f => Data.Functor.Bind.Class.Apply (Data.Ord.Ordering.MonadOrderT a f) instance GHC.Base.Applicative f => GHC.Base.Applicative (Data.Ord.Ordering.MonadOrderT a f) instance Data.Functor.Bind.Class.Bind f => Data.Functor.Bind.Class.Bind (Data.Ord.Ordering.MonadOrderT a f) instance GHC.Base.Monad f => GHC.Base.Monad (Data.Ord.Ordering.MonadOrderT a f) instance Data.Functor.Alt.Alt f => Data.Functor.Alt.Alt (Data.Ord.Ordering.MonadOrderT a f) instance GHC.Base.Alternative f => GHC.Base.Alternative (Data.Ord.Ordering.MonadOrderT a f) instance Control.Monad.IO.Class.MonadIO f => Control.Monad.IO.Class.MonadIO (Data.Ord.Ordering.MonadOrderT a f) instance Control.Monad.Trans.Class.MonadTrans (Data.Ord.Ordering.MonadOrderT a) instance Data.Ord.Ordering.HasOrdering GHC.Types.Ordering instance Data.Ord.Ordering.AsOrdering GHC.Types.Ordering instance (Data.Ord.Ordering.OrderT b' f' a' GHC.Types.~ t) => Control.Lens.Wrapped.Rewrapped (Data.Ord.Ordering.OrderT b f a) t instance Control.Lens.Wrapped.Wrapped (Data.Ord.Ordering.OrderT b f a) instance (GHC.Base.Applicative f, GHC.Base.Semigroup b) => GHC.Base.Semigroup (Data.Ord.Ordering.OrderT b f a) instance (GHC.Base.Applicative f, GHC.Base.Monoid b) => GHC.Base.Monoid (Data.Ord.Ordering.OrderT b f a) instance Data.Functor.Contravariant.Contravariant (Data.Ord.Ordering.OrderT b f) instance (GHC.Base.Applicative f, GHC.Base.Monoid b) => Data.Functor.Contravariant.Divisible.Divisible (Data.Ord.Ordering.OrderT b f)