generic-data-functions-0.1.1: Familiar functions lifted to generic data types
Safe HaskellSafe-Inferred
LanguageGHC2021

Generic.Data.Function.Via

Description

Wrapper types for using with DerivingVia.

Synopsis

Documentation

newtype NoRec0 a Source #

Wrapper for using to derive instances via generics. Emit type error on Rec0 base case i.e. any non-empty constructor.

Constructors

NoRec0 

Fields

Instances

Instances details
Applicative NoRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

pure :: a -> NoRec0 a Source #

(<*>) :: NoRec0 (a -> b) -> NoRec0 a -> NoRec0 b Source #

liftA2 :: (a -> b -> c) -> NoRec0 a -> NoRec0 b -> NoRec0 c Source #

(*>) :: NoRec0 a -> NoRec0 b -> NoRec0 b Source #

(<*) :: NoRec0 a -> NoRec0 b -> NoRec0 a Source #

Functor NoRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

fmap :: (a -> b) -> NoRec0 a -> NoRec0 b Source #

(<$) :: a -> NoRec0 b -> NoRec0 a Source #

Monad NoRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

(>>=) :: NoRec0 a -> (a -> NoRec0 b) -> NoRec0 b Source #

(>>) :: NoRec0 a -> NoRec0 b -> NoRec0 b Source #

return :: a -> NoRec0 a Source #

GenericTraverse NoRec0 Source #

traverse over types with no fields in any constructor.

Instance details

Defined in Generic.Data.Function.Traverse.Constructor

Associated Types

type GenericTraverseC NoRec0 a Source #

Generic (NoRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

Associated Types

type Rep (NoRec0 a) :: Type -> Type Source #

Methods

from :: NoRec0 a -> Rep (NoRec0 a) x Source #

to :: Rep (NoRec0 a) x -> NoRec0 a Source #

Show a => Show (NoRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

GenericFoldMap (NoRec0 m) Source #

foldMap over types with no fields in any constructor.

Instance details

Defined in Generic.Data.Function.FoldMap.Constructor

Associated Types

type GenericFoldMapC (NoRec0 m) a Source #

type GenericTraverseC NoRec0 a Source # 
Instance details

Defined in Generic.Data.Function.Traverse.Constructor

type Rep (NoRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

type Rep (NoRec0 a) = D1 ('MetaData "NoRec0" "Generic.Data.Function.Via" "generic-data-functions-0.1.1-inplace" 'True) (C1 ('MetaCons "NoRec0" 'PrefixI 'True) (S1 ('MetaSel ('Just "unNoRec0") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type GenericFoldMapC (NoRec0 m) _1 Source # 
Instance details

Defined in Generic.Data.Function.FoldMap.Constructor

type ENoRec0 = 'Text "Cannot use generic function on NoRec0-wrapped type containing fields" Source #

newtype EmptyRec0 a Source #

Wrapper for using to derive instances via generics. Do nothing for Rec0 base case i.e. every constructor field.

"nothing" probably means mempty, but *may* be another unit-like.

TODO This might not be useful. It's not "special" like NoRec0, it's basically tied to Monoid. So it's useful for foldMap, but kind of arbitrary when applied to traverse.

Constructors

EmptyRec0 

Fields

Instances

Instances details
Applicative EmptyRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

pure :: a -> EmptyRec0 a Source #

(<*>) :: EmptyRec0 (a -> b) -> EmptyRec0 a -> EmptyRec0 b Source #

liftA2 :: (a -> b -> c) -> EmptyRec0 a -> EmptyRec0 b -> EmptyRec0 c Source #

(*>) :: EmptyRec0 a -> EmptyRec0 b -> EmptyRec0 b Source #

(<*) :: EmptyRec0 a -> EmptyRec0 b -> EmptyRec0 a Source #

Functor EmptyRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

fmap :: (a -> b) -> EmptyRec0 a -> EmptyRec0 b Source #

(<$) :: a -> EmptyRec0 b -> EmptyRec0 a Source #

Monad EmptyRec0 Source # 
Instance details

Defined in Generic.Data.Function.Via

Methods

(>>=) :: EmptyRec0 a -> (a -> EmptyRec0 b) -> EmptyRec0 b Source #

(>>) :: EmptyRec0 a -> EmptyRec0 b -> EmptyRec0 b Source #

return :: a -> EmptyRec0 a Source #

GenericTraverse EmptyRec0 Source #

traverse over types where all fields map to their respective mempty.

Can result in type errors lacking context: a field missing a Monoid instance will type error with a regular "no instance for" message, without telling you the surrounding type.

Maybe silly.

Instance details

Defined in Generic.Data.Function.Traverse.Constructor

Associated Types

type GenericTraverseC EmptyRec0 a Source #

Generic (EmptyRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

Associated Types

type Rep (EmptyRec0 a) :: Type -> Type Source #

Methods

from :: EmptyRec0 a -> Rep (EmptyRec0 a) x Source #

to :: Rep (EmptyRec0 a) x -> EmptyRec0 a Source #

Show a => Show (EmptyRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

Monoid m => GenericFoldMap (EmptyRec0 m) Source #

foldMap over types where all fields map to mempty.

Instance details

Defined in Generic.Data.Function.FoldMap.Constructor

Associated Types

type GenericFoldMapC (EmptyRec0 m) a Source #

type GenericTraverseC EmptyRec0 a Source # 
Instance details

Defined in Generic.Data.Function.Traverse.Constructor

type Rep (EmptyRec0 a) Source # 
Instance details

Defined in Generic.Data.Function.Via

type Rep (EmptyRec0 a) = D1 ('MetaData "EmptyRec0" "Generic.Data.Function.Via" "generic-data-functions-0.1.1-inplace" 'True) (C1 ('MetaCons "EmptyRec0" 'PrefixI 'True) (S1 ('MetaSel ('Just "unEmptyRec0") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type GenericFoldMapC (EmptyRec0 m) _1 Source # 
Instance details

Defined in Generic.Data.Function.FoldMap.Constructor

type GenericFoldMapC (EmptyRec0 m) _1 = ()