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