Description
Liftings of the Prelude classes Eq
, Ord
, Read
and Show
to unary and binary type constructors.
These classes are needed to express the constraints on arguments of transformers in portable Haskell. Thus for a new transformer T
, one might write instances like
instance (Eq1 f) => Eq1 (T f) where ... instance (Ord1 f) => Ord1 (T f) where ... instance (Read1 f) => Read1 (T f) where ... instance (Show1 f) => Show1 (T f) where ...
If these instances can be defined, defining instances of the base classes is mechanical:
instance (Eq1 f, Eq a) => Eq (T f a) where (==) = eq1 instance (Ord1 f, Ord a) => Ord (T f a) where compare = compare1 instance (Read1 f, Read a) => Read (T f a) where readPrec = readPrec1 readListPrec = readListPrecDefault instance (Show1 f, Show a) => Show (T f a) where showsPrec = showsPrec1
Since: base-4.9.0.0
Synopsisclass (forall a. Eq a => Eq (f a)) => Eq1 (f :: Type -> Type) where Source #
Lifting of the Eq
class to unary type constructors.
Any instance should be subject to the following law that canonicity is preserved:
liftEq (==)
= (==)
This class therefore represents the generalization of Eq
by decomposing its main method into a canonical lifting on a canonical inner method, so that the lifting can be reused for other arguments than the canonical one.
Since: base-4.9.0.0
Minimal complete definition
Nothing
Methods
liftEq :: (a -> b -> Bool) -> f a -> f b -> Bool Source #
Lift an equality test through the type constructor.
The function will usually be applied to an equality function, but the more general type ensures that the implementation uses it to compare elements of the first container with elements of the second.
Since: base-4.9.0.0
Instances Instances details Eq1 Complex Source #>>>
eq1 (1 :+ 2) (1 :+ 2)
True
>>>
eq1 (1 :+ 2) (1 :+ 3)
False
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 NonEmpty Source #Since: base-4.10.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 Identity Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 Down Source #Since: base-4.12.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 Par1 Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 Maybe Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 Solo Source #Since: base-4.15
Instance detailsDefined in Data.Functor.Classes
Eq1 [] Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq a => Eq1 (Either a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (Proxy :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (U1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UAddr :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UChar :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UDouble :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UFloat :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UInt :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (UWord :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 (V1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq a => Eq1 ((,) a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq a => Eq1 (Const a :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
(Generic1 f, Eq1 (Rep1 f)) => Eq1 (Generically1 f) Source #Since: base-4.17.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 f => Eq1 (Rec1 f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq a, Eq b) => Eq1 ((,,) a b) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq1 f, Eq1 g) => Eq1 (Product f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Product
(Eq1 f, Eq1 g) => Eq1 (Sum f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Sum
(Eq1 f, Eq1 g) => Eq1 (f :*: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq1 f, Eq1 g) => Eq1 (f :+: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq c => Eq1 (K1 i c :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq a, Eq b, Eq c) => Eq1 ((,,,) a b c) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq1 f, Eq1 g) => Eq1 (Compose f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Compose
(Eq1 f, Eq1 g) => Eq1 (f :.: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Eq1 f => Eq1 (M1 i c f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
eq1 :: (Eq1 f, Eq a) => f a -> f a -> Bool Source #
Lift the standard (
function through the type constructor.==
)
Since: base-4.9.0.0
class (Eq1 f, forall a. Ord a => Ord (f a)) => Ord1 (f :: Type -> Type) where Source #
Lifting of the Ord
class to unary type constructors.
Any instance should be subject to the following law that canonicity is preserved:
liftCompare compare
= compare
This class therefore represents the generalization of Ord
by decomposing its main method into a canonical lifting on a canonical inner method, so that the lifting can be reused for other arguments than the canonical one.
Since: base-4.9.0.0
Minimal complete definition
Nothing
Methods
liftCompare :: (a -> b -> Ordering) -> f a -> f b -> Ordering Source #
Lift a compare
function through the type constructor.
The function will usually be applied to a comparison function, but the more general type ensures that the implementation uses it to compare elements of the first container with elements of the second.
Since: base-4.9.0.0
Instances Instances details Ord1 NonEmpty Source #Since: base-4.10.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 Identity Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 Down Source #Since: base-4.12.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 Par1 Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 Maybe Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 Solo Source #Since: base-4.15
Instance detailsDefined in Data.Functor.Classes
Ord1 [] Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord a => Ord1 (Either a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (Proxy :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (U1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UAddr :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UChar :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UDouble :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UFloat :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UInt :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (UWord :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 (V1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord a => Ord1 ((,) a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord a => Ord1 (Const a :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
(Generic1 f, Ord1 (Rep1 f)) => Ord1 (Generically1 f) Source #Since: base-4.17.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 f => Ord1 (Rec1 f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord a, Ord b) => Ord1 ((,,) a b) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord1 f, Ord1 g) => Ord1 (Product f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Product
(Ord1 f, Ord1 g) => Ord1 (Sum f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Sum
(Ord1 f, Ord1 g) => Ord1 (f :*: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord1 f, Ord1 g) => Ord1 (f :+: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord c => Ord1 (K1 i c :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord a, Ord b, Ord c) => Ord1 ((,,,) a b c) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord1 f, Ord1 g) => Ord1 (Compose f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Compose
(Ord1 f, Ord1 g) => Ord1 (f :.: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Ord1 f => Ord1 (M1 i c f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
class (forall a. Read a => Read (f a)) => Read1 (f :: Type -> Type) where Source #
Lifting of the Read
class to unary type constructors.
Any instance should be subject to the following laws that canonicity is preserved:
liftReadsPrec readsPrec readList
= readsPrec
liftReadList readsPrec readList
= readList
liftReadPrec readPrec readListPrec
= readPrec
liftReadListPrec readPrec readListPrec
= readListPrec
This class therefore represents the generalization of Read
by decomposing it's methods into a canonical lifting on a canonical inner method, so that the lifting can be reused for other arguments than the canonical one.
Both liftReadsPrec
and liftReadPrec
exist to match the interface provided in the Read
type class, but it is recommended to implement Read1
instances using liftReadPrec
as opposed to liftReadsPrec
, since the former is more efficient than the latter. For example:
instanceRead1
T whereliftReadPrec
= ...liftReadListPrec
=liftReadListPrecDefault
For more information, refer to the documentation for the Read
class.
Since: base-4.9.0.0
Instances Instances details Read1 Complex Source #>>>
readPrec_to_S readPrec1 0 "(2 % 3) :+ (3 % 4)" :: [(Complex Rational, String)]
[(2 % 3 :+ 3 % 4,"")]
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 NonEmpty Source #Since: base-4.10.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 Identity Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 Down Source #Since: base-4.12.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 Par1 Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 Maybe Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 Solo Source #Since: base-4.15
Instance detailsDefined in Data.Functor.Classes
Read1 [] Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read a => Read1 (Either a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 (Proxy :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 (U1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 (V1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Read a => Read1 ((,) a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read a => Read1 (Const a :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 f => Read1 (Rec1 f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Read a, Read b) => Read1 ((,,) a b) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Read1 f, Read1 g) => Read1 (Product f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Product
(Read1 f, Read1 g) => Read1 (Sum f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Sum
(Read1 f, Read1 g) => Read1 (f :*: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Read1 f, Read1 g) => Read1 (f :+: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Read c => Read1 (K1 i c :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Read a, Read b, Read c) => Read1 ((,,,) a b c) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Methods
liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (a, b, c, a0) Source #
liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [(a, b, c, a0)] Source #
liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (a, b, c, a0) Source #
liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [(a, b, c, a0)] Source #
(Read1 f, Read1 g) => Read1 (Compose f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Compose
(Read1 f, Read1 g) => Read1 (f :.: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Read1 f => Read1 (M1 i c f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
class (forall a. Show a => Show (f a)) => Show1 (f :: Type -> Type) where Source #
Lifting of the Show
class to unary type constructors.
Any instance should be subject to the following laws that canonicity is preserved:
liftShowsPrec showsPrec showList
= showsPrec
liftShowList showsPrec showList
= showList
This class therefore represents the generalization of Show
by decomposing it's methods into a canonical lifting on a canonical inner method, so that the lifting can be reused for other arguments than the canonical one.
Since: base-4.9.0.0
Minimal complete definition
Nothing
Instances Instances details Show1 Complex Source #>>>
showsPrec1 0 (2 :+ 3) ""
"2 :+ 3"
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 NonEmpty Source #Since: base-4.10.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 Identity Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 Down Source #Since: base-4.12.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 Par1 Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 Maybe Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 Solo Source #Since: base-4.15
Instance detailsDefined in Data.Functor.Classes
Show1 [] Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show a => Show1 (Either a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (Proxy :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (U1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UAddr :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UChar :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UDouble :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UFloat :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UInt :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (UWord :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 (V1 :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show a => Show1 ((,) a) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show a => Show1 (Const a :: Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 f => Show1 (Rec1 f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Show a, Show b) => Show1 ((,,) a b) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Show1 f, Show1 g) => Show1 (Product f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Product
(Show1 f, Show1 g) => Show1 (Sum f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Sum
(Show1 f, Show1 g) => Show1 (f :*: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Show1 f, Show1 g) => Show1 (f :+: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show c => Show1 (K1 i c :: Type -> Type) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
(Show a, Show b, Show c) => Show1 ((,,,) a b c) Source #Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Show1 f, Show1 g) => Show1 (Compose f g) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Compose
(Show1 f, Show1 g) => Show1 (f :.: g) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
Show1 f => Show1 (M1 i c f) Source #Since: base-4.21.0.0
Instance detailsDefined in Data.Functor.Classes
For binary constructorsclass (forall a. Eq a => Eq1 (f a)) => Eq2 (f :: Type -> Type -> Type) where Source #
Lifting of the Eq
class to binary type constructors.
Since: base-4.9.0.0
Methods
liftEq2 :: (a -> b -> Bool) -> (c -> d -> Bool) -> f a c -> f b d -> Bool Source #
Lift equality tests through the type constructor.
The function will usually be applied to equality functions, but the more general type ensures that the implementation uses them to compare elements of the first container with elements of the second.
Since: base-4.9.0.0
Instances Instances details Eq2 Either Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq2 (,) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq2 (Const :: Type -> Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Eq a => Eq2 ((,,) a) Source #>>>
eq2 ('x', True, "str") ('x', True, "str")
True
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Eq a, Eq b) => Eq2 ((,,,) a b) Source #>>>
eq2 ('x', True, "str", 2) ('x', True, "str", 2 :: Int)
True
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
eq2 :: (Eq2 f, Eq a, Eq b) => f a b -> f a b -> Bool Source #
Lift the standard (
function through the type constructor.==
)
Since: base-4.9.0.0
class (Eq2 f, forall a. Ord a => Ord1 (f a)) => Ord2 (f :: Type -> Type -> Type) where Source #
Lifting of the Ord
class to binary type constructors.
Since: base-4.9.0.0
Methods
liftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> f a c -> f b d -> Ordering Source #
Lift compare
functions through the type constructor.
The function will usually be applied to comparison functions, but the more general type ensures that the implementation uses them to compare elements of the first container with elements of the second.
Since: base-4.9.0.0
Instances Instances details Ord2 Either Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord2 (,) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord2 (Const :: Type -> Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Ord a => Ord2 ((,,) a) Source #>>>
compare2 ('x', True, "aaa") ('x', True, "zzz")
LT
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Ord a, Ord b) => Ord2 ((,,,) a b) Source #>>>
compare2 ('x', True, "str", 2) ('x', True, "str", 3 :: Int)
LT
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
class (forall a. Read a => Read1 (f a)) => Read2 (f :: Type -> Type -> Type) where Source #
Instances Instances details Read2 Either Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read2 (,) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read2 (Const :: Type -> Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Read a => Read2 ((,,) a) Source #>>>
readPrec_to_S readPrec2 0 "('x', True, 2)" :: [((Char, Bool, Int), String)]
[(('x',True,2),"")]
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Read a, Read b) => Read2 ((,,,) a b) Source #>>>
readPrec_to_S readPrec2 0 "('x', True, 2, 4.5)" :: [((Char, Bool, Int, Double), String)]
[(('x',True,2,4.5),"")]
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Methods
liftReadsPrec2 :: (Int -> ReadS a0) -> ReadS [a0] -> (Int -> ReadS b0) -> ReadS [b0] -> Int -> ReadS (a, b, a0, b0) Source #
liftReadList2 :: (Int -> ReadS a0) -> ReadS [a0] -> (Int -> ReadS b0) -> ReadS [b0] -> ReadS [(a, b, a0, b0)] Source #
liftReadPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b0 -> ReadPrec [b0] -> ReadPrec (a, b, a0, b0) Source #
liftReadListPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b0 -> ReadPrec [b0] -> ReadPrec [(a, b, a0, b0)] Source #
class (forall a. Show a => Show1 (f a)) => Show2 (f :: Type -> Type -> Type) where Source #
Lifting of the Show
class to binary type constructors.
Since: base-4.9.0.0
Instances Instances details Show2 Either Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show2 (,) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show2 (Const :: Type -> Type -> Type) Source #Since: base-4.9.0.0
Instance detailsDefined in Data.Functor.Classes
Show a => Show2 ((,,) a) Source #>>>
showsPrec2 0 ('x', True, 2 :: Int) ""
"('x',True,2)"
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
(Show a, Show b) => Show2 ((,,,) a b) Source #>>>
showsPrec2 0 ('x', True, 2 :: Int, 4.5 :: Double) ""
"('x',True,2,4.5)"
Since: base-4.16.0.0
Instance detailsDefined in Data.Functor.Classes
Helper functionsThese functions can be used to assemble Read
and Show
instances for new algebraic types. For example, given the definition
data T f a = Zero a | One (f a) | Two a (f a)
a standard Read1
instance may be defined as
instance (Read1 f) => Read1 (T f) where liftReadPrec rp rl = readData $ readUnaryWith rp "Zero" Zero <|> readUnaryWith (liftReadPrec rp rl) "One" One <|> readBinaryWith rp (liftReadPrec rp rl) "Two" Two liftReadListPrec = liftReadListPrecDefault
and the corresponding Show1
instance as
instance (Show1 f) => Show1 (T f) where liftShowsPrec sp _ d (Zero x) = showsUnaryWith sp "Zero" d x liftShowsPrec sp sl d (One x) = showsUnaryWith (liftShowsPrec sp sl) "One" d x liftShowsPrec sp sl d (Two x y) = showsBinaryWith sp (liftShowsPrec sp sl) "Two" d x yObsolete helpers
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4