generic-data-1.1.0.2: Deriving instances with GHC.Generics and related utilities
Safe HaskellNone
LanguageHaskell2010

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

Documentation

newtype Generically a #

Constructors

Generically a 

Instances

Instances details
(Generic a, Monoid (Rep a ())) => Monoid (Generically a) 
Instance details

Defined in GHC.Generics

(Generic a, Semigroup (Rep a ())) => Semigroup (Generically a) 
Instance details

Defined in GHC.Generics

Methods

(<>) :: Generically a -> Generically a -> Generically a

sconcat :: NonEmpty (Generically a) -> Generically a

stimes :: Integral b => b -> Generically a -> Generically a

(Generic a, GBounded (Rep a)) => Bounded (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

(Generic a, GEnum StandardEnum (Rep a)) => Enum (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

Generic a => Generic (Generically a) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically.

Instance details

Defined in Generic.Data.Internal.Generically

Associated Types

type Rep (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically a) = Rep a

Methods

from :: Generically a -> Rep (Generically a) x

to :: Rep (Generically a) x -> Generically a

(Generic a, Ord (Rep a ()), GIx (Rep a)) => Ix (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

(Generic a, GRead0 (Rep a)) => Read (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

readsPrec :: Int -> ReadS (Generically a)

readList :: ReadS [Generically a]

readPrec :: ReadPrec (Generically a)

readListPrec :: ReadPrec [Generically a]

(Generic a, GShow0 (Rep a)) => Show (Generically a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

showsPrec :: Int -> Generically a -> ShowS #

show :: Generically a -> String #

showList :: [Generically a] -> ShowS #

(Generic a, Eq (Rep a ())) => Eq (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

(==) :: Generically a -> Generically a -> Bool

(/=) :: Generically a -> Generically a -> Bool

(Generic a, Ord (Rep a ())) => Ord (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

compare :: Generically a -> Generically a -> Ordering

(<) :: Generically a -> Generically a -> Bool

(<=) :: Generically a -> Generically a -> Bool

(>) :: Generically a -> Generically a -> Bool

(>=) :: Generically a -> Generically a -> Bool

max :: Generically a -> Generically a -> Generically a

min :: Generically a -> Generically a -> Generically a

type Rep (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically a) = Rep a

newtype Generically1 (f :: k -> Type) (a :: k) where #

Constructors

Generically1 :: forall {k} (f :: k -> Type) (a :: k). f a -> Generically1 f a 

Instances

Instances details
Generic1 f => Generic1 (Generically1 f :: Type -> Type) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically1.

Instance details

Defined in Generic.Data.Internal.Generically

Associated Types

type Rep1 (Generically1 f :: Type -> Type) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep1 (Generically1 f :: Type -> Type) = Rep1 f

Methods

from1 :: Generically1 f a -> Rep1 (Generically1 f) a

to1 :: Rep1 (Generically1 f) a -> Generically1 f a

(Generic1 f, GFoldable (Rep1 f)) => Foldable (Generically1 f) 
Instance details

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, Eq1 (Rep1 f)) => Eq1 (Generically1 f) 
Instance details

Defined in Data.Functor.Classes

Methods

liftEq :: (a -> b -> Bool) -> Generically1 f a -> Generically1 f b -> Bool

(Generic1 f, Ord1 (Rep1 f)) => Ord1 (Generically1 f) 
Instance details

Defined in Data.Functor.Classes

Methods

liftCompare :: (a -> b -> Ordering) -> Generically1 f a -> Generically1 f b -> Ordering

(Generic1 f, GRead1 (Rep1 f)) => Read1 (Generically1 f) 
Instance details

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, GShow1 (Rep1 f)) => Show1 (Generically1 f) 
Instance details

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, Functor (Rep1 f), GFoldable (Rep1 f), GTraversable (Rep1 f)) => Traversable (Generically1 f) 
Instance details

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, Alternative (Rep1 f)) => Alternative (Generically1 f) 
Instance details

Defined in GHC.Generics

(Generic1 f, Applicative (Rep1 f)) => Applicative (Generically1 f) 
Instance details

Defined in GHC.Generics

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, Functor (Rep1 f)) => Functor (Generically1 f) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Generically1 f a -> Generically1 f b

(<$) :: a -> Generically1 f b -> Generically1 f a

Generic (f a) => Generic (Generically1 f a) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically1.

Instance details

Defined in Generic.Data.Internal.Generically

Associated Types

type Rep (Generically1 f a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically1 f a) = Rep (f a)

Methods

from :: Generically1 f a -> Rep (Generically1 f a) x

to :: Rep (Generically1 f a) x -> Generically1 f a

(Generic1 f, GRead1 (Rep1 f), Read a) => Read (Generically1 f a) 
Instance details

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 # 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

showsPrec :: Int -> Generically1 f a -> ShowS #

show :: Generically1 f a -> String #

showList :: [Generically1 f a] -> ShowS #

(Generic1 f, Eq (Rep1 f a)) => Eq (Generically1 f a) 
Instance details

Defined in GHC.Generics

Methods

(==) :: Generically1 f a -> Generically1 f a -> Bool

(/=) :: Generically1 f a -> Generically1 f a -> Bool

(Generic1 f, Ord (Rep1 f a)) => Ord (Generically1 f a) 
Instance details

Defined in GHC.Generics

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

type Rep1 (Generically1 f :: Type -> Type) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep1 (Generically1 f :: Type -> Type) = Rep1 f
type Rep (Generically1 f a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically1 f a) = Rep (f a)

newtype FiniteEnumeration a Source #

Type with Enum instance derived via Generic with FiniteEnum option. This allows deriving Enum for types whose constructors have fields.

Some caution is advised; see details in FiniteEnum.

Example

Expand
>>> :{
data Booool = Booool Bool Bool
  deriving Generic
  deriving (Enum, Bounded) via (FiniteEnumeration Booool)
:}

Constructors

FiniteEnumeration a 

Instances

Instances details
(Generic a, GBounded (Rep a)) => Bounded (FiniteEnumeration a) Source #

The same instance as Generically, for convenience.

Instance details

Defined in Generic.Data.Internal.Generically

(Generic a, GEnum FiniteEnum (Rep a)) => Enum (FiniteEnumeration a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

Generic a => Generic (FiniteEnumeration a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

Associated Types

type Rep (FiniteEnumeration a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (FiniteEnumeration a) = Rep a
type Rep (FiniteEnumeration a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (FiniteEnumeration a) = Rep 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 GenericProduct U, where U 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

Expand
>>> import Data.Monoid (Sum(..))
>>> 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 Generically (Point (Sum a)) instead, then 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 a 

Instances

Instances details
(AssertNoSum Semigroup a, Generic a, Monoid (Rep a ())) => Monoid (GenericProduct a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

(AssertNoSum Semigroup a, Generic a, Semigroup (Rep a ())) => Semigroup (GenericProduct a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

Methods

(<>) :: GenericProduct a -> GenericProduct a -> GenericProduct a

sconcat :: NonEmpty (GenericProduct a) -> GenericProduct a

stimes :: Integral b => b -> GenericProduct a -> GenericProduct a

Generic a => Generic (GenericProduct a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

Associated Types

type Rep (GenericProduct a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (GenericProduct a) = Rep a

Methods

from :: GenericProduct a -> Rep (GenericProduct a) x

to :: Rep (GenericProduct a) x -> GenericProduct a

type Rep (GenericProduct a) Source # 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (GenericProduct a) = Rep a

Orphan instances

Generic1 f => Generic1 (Generically1 f :: Type -> Type) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically1.

Instance details

Associated Types

type Rep1 (Generically1 f :: Type -> Type) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep1 (Generically1 f :: Type -> Type) = Rep1 f

Methods

from1 :: Generically1 f a -> Rep1 (Generically1 f) a

to1 :: Rep1 (Generically1 f) a -> Generically1 f a

(Generic a, GBounded (Rep a)) => Bounded (Generically a) Source # 
Instance details

(Generic a, GEnum StandardEnum (Rep a)) => Enum (Generically a) Source # 
Instance details

Generic a => Generic (Generically a) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically.

Instance details

Associated Types

type Rep (Generically a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically a) = Rep a

Methods

from :: Generically a -> Rep (Generically a) x

to :: Rep (Generically a) x -> Generically a

(Generic a, Ord (Rep a ()), GIx (Rep a)) => Ix (Generically a) Source # 
Instance details

(Generic a, GRead0 (Rep a)) => Read (Generically a) Source # 
Instance details

Methods

readsPrec :: Int -> ReadS (Generically a)

readList :: ReadS [Generically a]

readPrec :: ReadPrec (Generically a)

readListPrec :: ReadPrec [Generically a]

(Generic a, GShow0 (Rep a)) => Show (Generically a) Source # 
Instance details

Methods

showsPrec :: Int -> Generically a -> ShowS #

show :: Generically a -> String #

showList :: [Generically a] -> ShowS #

(Generic a, Eq (Rep a ())) => Eq (Generically a) Source # 
Instance details

Methods

(==) :: Generically a -> Generically a -> Bool

(/=) :: Generically a -> Generically a -> Bool

(Generic a, Ord (Rep a ())) => Ord (Generically a) Source # 
Instance details

Methods

compare :: Generically a -> Generically a -> Ordering

(<) :: Generically a -> Generically a -> Bool

(<=) :: Generically a -> Generically a -> Bool

(>) :: Generically a -> Generically a -> Bool

(>=) :: Generically a -> Generically a -> Bool

max :: Generically a -> Generically a -> Generically a

min :: Generically a -> Generically a -> Generically a

(Generic1 f, GFoldable (Rep1 f)) => Foldable (Generically1 f) Source # 
Instance details

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, GRead1 (Rep1 f)) => Read1 (Generically1 f) Source # 
Instance details

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, GShow1 (Rep1 f)) => Show1 (Generically1 f) Source # 
Instance details

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Generically1 f a -> ShowS

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Generically1 f a] -> ShowS

(Generic1 f, Functor (Rep1 f), GFoldable (Rep1 f), GTraversable (Rep1 f)) => Traversable (Generically1 f) Source # 
Instance details

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)

Generic (f a) => Generic (Generically1 f a) Source #

This is a hack to implicitly wrap/unwrap in the instances of Generically1.

Instance details

Associated Types

type Rep (Generically1 f a) 
Instance details

Defined in Generic.Data.Internal.Generically

type Rep (Generically1 f a) = Rep (f a)

Methods

from :: Generically1 f a -> Rep (Generically1 f a) x

to :: Rep (Generically1 f a) x -> Generically1 f a

(Generic1 f, GRead1 (Rep1 f), Read a) => Read (Generically1 f a) Source # 
Instance details

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 # 
Instance details

Methods

showsPrec :: Int -> Generically1 f a -> ShowS #

show :: Generically1 f a -> String #

showList :: [Generically1 f a] -> ShowS #