Safe Haskell | None |
---|---|
Language | Haskell2010 |
Generic.Data.Internal.Generically
Description
Newtypes with instances implemented using generic combinators.
Warning
This is an internal module: it is not subject to any versioning policy, breaking changes can happen at any time.
If something here seems useful, please report it or create a pull request to export it from an external module.
Synopsis
- newtype Generically a = Generically {
- unGenerically :: a
- newtype FiniteEnumeration a = FiniteEnumeration {
- unFiniteEnumeration :: a
- newtype Generically1 f a = Generically1 {
- unGenerically1 :: f a
- newtype GenericProduct a = GenericProduct {
- unGenericProduct :: a
Documentation
newtype Generically a Source #
Type with instances derived via Generic
.
Constructors
Generically | |
Fields
|
Instances
newtype FiniteEnumeration a Source #
Type with Enum
instance derived via Generic
with FiniteEnum
option.
Constructors
FiniteEnumeration | |
Fields
|
Instances
newtype Generically1 f a Source #
Type with instances derived via Generic1
.
Constructors
Generically1 | |
Fields
|
Instances
(Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods fmap :: (a -> b) -> Generically1 f a -> Generically1 f b (<$) :: a -> Generically1 f b -> Generically1 f a | |
(Generic1 f, Applicative (Rep1 f)) => Applicative (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods pure :: a -> Generically1 f a (<*>) :: Generically1 f (a -> b) -> Generically1 f a -> Generically1 f b liftA2 :: (a -> b -> c) -> Generically1 f a -> Generically1 f b -> Generically1 f c (*>) :: Generically1 f a -> Generically1 f b -> Generically1 f b (<*) :: Generically1 f a -> Generically1 f b -> Generically1 f a | |
(Generic1 f, Foldable (Rep1 f)) => Foldable (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods fold :: Monoid m => Generically1 f m -> m foldMap :: Monoid m => (a -> m) -> Generically1 f a -> m foldMap' :: Monoid m => (a -> m) -> Generically1 f a -> m foldr :: (a -> b -> b) -> b -> Generically1 f a -> b foldr' :: (a -> b -> b) -> b -> Generically1 f a -> b foldl :: (b -> a -> b) -> b -> Generically1 f a -> b foldl' :: (b -> a -> b) -> b -> Generically1 f a -> b foldr1 :: (a -> a -> a) -> Generically1 f a -> a foldl1 :: (a -> a -> a) -> Generically1 f a -> a toList :: Generically1 f a -> [a] null :: Generically1 f a -> Bool length :: Generically1 f a -> Int elem :: Eq a => a -> Generically1 f a -> Bool maximum :: Ord a => Generically1 f a -> a minimum :: Ord a => Generically1 f a -> a sum :: Num a => Generically1 f a -> a product :: Num a => Generically1 f a -> a | |
(Generic1 f, Traversable (Rep1 f)) => Traversable (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods traverse :: Applicative f0 => (a -> f0 b) -> Generically1 f a -> f0 (Generically1 f b) sequenceA :: Applicative f0 => Generically1 f (f0 a) -> f0 (Generically1 f a) mapM :: Monad m => (a -> m b) -> Generically1 f a -> m (Generically1 f b) sequence :: Monad m => Generically1 f (m a) -> m (Generically1 f a) | |
(Generic1 f, GShow1 (Rep1 f)) => Show1 (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Generically1 f a -> ShowS liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Generically1 f a] -> ShowS | |
(Generic1 f, GRead1 (Rep1 f)) => Read1 (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Generically1 f a) liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Generically1 f a] liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Generically1 f a) liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Generically1 f a] | |
(Generic1 f, Ord1 (Rep1 f)) => Ord1 (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods liftCompare :: (a -> b -> Ordering) -> Generically1 f a -> Generically1 f b -> Ordering | |
(Generic1 f, Eq1 (Rep1 f)) => Eq1 (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods liftEq :: (a -> b -> Bool) -> Generically1 f a -> Generically1 f b -> Bool | |
(Generic1 f, Alternative (Rep1 f)) => Alternative (Generically1 f) Source # | |
Defined in Generic.Data.Internal.Generically Methods empty :: Generically1 f a (<|>) :: Generically1 f a -> Generically1 f a -> Generically1 f a some :: Generically1 f a -> Generically1 f [a] many :: Generically1 f a -> Generically1 f [a] | |
Generic1 f => Generic1 (Generically1 f :: Type -> Type) Source # | |
Defined in Generic.Data.Internal.Generically Associated Types type Rep1 (Generically1 f) :: k -> Type Methods from1 :: forall (a :: k). Generically1 f a -> Rep1 (Generically1 f) a to1 :: forall (a :: k). Rep1 (Generically1 f) a -> Generically1 f a | |
(Generic1 f, Eq1 (Rep1 f), Eq a) => Eq (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically Methods (==) :: Generically1 f a -> Generically1 f a -> Bool (/=) :: Generically1 f a -> Generically1 f a -> Bool | |
(Generic1 f, Ord1 (Rep1 f), Ord a) => Ord (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically Methods compare :: Generically1 f a -> Generically1 f a -> Ordering (<) :: Generically1 f a -> Generically1 f a -> Bool (<=) :: Generically1 f a -> Generically1 f a -> Bool (>) :: Generically1 f a -> Generically1 f a -> Bool (>=) :: Generically1 f a -> Generically1 f a -> Bool max :: Generically1 f a -> Generically1 f a -> Generically1 f a min :: Generically1 f a -> Generically1 f a -> Generically1 f a | |
(Generic1 f, GRead1 (Rep1 f), Read a) => Read (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically Methods readsPrec :: Int -> ReadS (Generically1 f a) readList :: ReadS [Generically1 f a] readPrec :: ReadPrec (Generically1 f a) readListPrec :: ReadPrec [Generically1 f a] | |
(Generic1 f, GShow1 (Rep1 f), Show a) => Show (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically Methods showsPrec :: Int -> Generically1 f a -> ShowS show :: Generically1 f a -> String showList :: [Generically1 f a] -> ShowS | |
Generic (f a) => Generic (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically Associated Types type Rep (Generically1 f a) :: Type -> Type Methods from :: Generically1 f a -> Rep (Generically1 f a) x to :: Rep (Generically1 f a) x -> Generically1 f a | |
type Rep1 (Generically1 f :: Type -> Type) Source # | |
Defined in Generic.Data.Internal.Generically type Rep1 (Generically1 f :: Type -> Type) = Rep1 f | |
type Rep (Generically1 f a) Source # | |
Defined in Generic.Data.Internal.Generically type Rep (Generically1 f a) = Rep (f a) |
newtype GenericProduct a Source #
Product type with generic instances of Semigroup
and Monoid
.
This is similar to Generically
in most cases, but
GenericProduct
also works for types T
with deriving
via
, where GenericProduct
UU
is a generic product type coercible to,
but distinct from T
. In particular, U
may not have an instance of
Semigroup
, which Generically
requires.
Example
>>>
:set -XDeriveGeneric -XDerivingVia
>>>
data Point a = Point a a deriving Generic
>>>
:{
newtype Vector a = Vector (Point a) deriving (Semigroup, Monoid) via GenericProduct (Point (Sum a)) :}
If it were via
instead, then
Generically
(Point (Sum a))Vector
's mappend
(the Monoid
method) would be defined as Point
's
(
(the <>
)Semigroup
method), which might not exist, or might not be
equivalent to Vector
's generic Semigroup
instance, which would be
unlawful.
Constructors
GenericProduct | |
Fields
|