Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Convert.Class
- class Convertible t t' where
- class Convertible1 t t' where
- class Convertible2 t t' where
- class Convertible3 t t' where
- class Convertible4 t t' where
- class Convertible5 t t' where
- type IdConversionErr (t :: k) = (Text "Conversion of the same type (`" :<>: ShowType t) :<>: Text "`) is disabled by default. Please use convert' if you want to enable it."
- convertTo :: forall t' t. Convertible t t' => t -> t'
- convertTo1 :: forall t' t. Convertible1 t t' => forall s1. t s1 -> t' s1
- convertTo2 :: forall t' t. Convertible2 t t' => forall s1 s2. t s1 s2 -> t' s1 s2
- convertTo3 :: forall t' t. Convertible3 t t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3
- convertTo4 :: forall t' t. Convertible4 t t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4
- convertTo5 :: forall t' t. Convertible5 t t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5
- class Convertible' t t' where
- class Convertible1' t t' where
- class Convertible2' t t' where
- class Convertible3' t t' where
- class Convertible4' t t' where
- class Convertible5' t t' where
- convertTo' :: forall t' t. Convertible' t t' => t -> t'
- convertTo1' :: forall t' t. Convertible1' t t' => forall s1. t s1 -> t' s1
- convertTo2' :: forall t' t. Convertible2' t t' => forall s1 s2. t s1 s2 -> t' s1 s2
- convertTo3' :: forall t' t. Convertible3' t t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3
- convertTo4' :: forall t' t. Convertible4' t t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4
- convertTo5' :: forall t' t. Convertible5' t t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5
- data SimpleConversionError = SimpleConversionError
- class PartialConvertible t t' where
- type ConversionError t t'
- defConvertAssert :: Default e => (a -> Bool) -> a -> Maybe e
- unsafeConvertTo :: forall t' t. PartialConvertible t t' => t -> t'
- convertAssertTo :: forall t' t. PartialConvertible t t' => t -> Maybe (ConversionError t t')
- maybeConvert :: forall t t'. PartialConvertible t t' => t -> Maybe t'
- tryConvert :: forall t t'. PartialConvertible t t' => t -> Either (ConversionError t t') t'
- type BiConvertible t t' = (Convertible t t', Convertible t' t)
- type BiConvertible1 t t' = (Convertible1 t t', Convertible1 t' t)
- type BiConvertible2 t t' = (Convertible2 t t', Convertible2 t' t)
- type BiConvertible3 t t' = (Convertible3 t t', Convertible3 t' t)
- type BiConvertible4 t t' = (Convertible4 t t', Convertible4 t' t)
- type BiConvertible5 t t' = (Convertible5 t t', Convertible5 t' t)
- type BiConvertible' t t' = (Convertible' t t', Convertible' t' t)
- type BiConvertible1' t t' = (Convertible1' t t', Convertible1' t' t)
- type BiConvertible2' t t' = (Convertible2' t t', Convertible2' t' t)
- type BiConvertible3' t t' = (Convertible3' t t', Convertible3' t' t)
- type BiConvertible4' t t' = (Convertible4' t t', Convertible4' t' t)
- type BiConvertible5' t t' = (Convertible5' t t', Convertible5' t' t)
- type BiPartialConvertible t t' = (PartialConvertible t t', PartialConvertible t t')
- converted :: BiConvertible t t' => Iso' t t'
- converted1 :: BiConvertible1 t t' => forall s1. Iso' (t s1) (t' s1)
- converted2 :: BiConvertible2 t t' => forall s1 s2. Iso' (t s1 s2) (t' s1 s2)
- converted3 :: BiConvertible3 t t' => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3)
- converted4 :: BiConvertible4 t t' => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4)
- converted5 :: BiConvertible5 t t' => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5)
- converted' :: BiConvertible' t t' => Iso' t t'
- converted1' :: BiConvertible1' t t' => forall s1. Iso' (t s1) (t' s1)
- converted2' :: BiConvertible2' t t' => forall s1 s2. Iso' (t s1 s2) (t' s1 s2)
- converted3' :: BiConvertible3' t t' => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3)
- converted4' :: BiConvertible4' t t' => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4)
- converted5' :: BiConvertible5' t t' => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5)
- convertedTo :: BiConvertible t' t => Iso' t t'
- convertedTo1 :: BiConvertible1 t' t => forall s1. Iso' (t s1) (t' s1)
- convertedTo2 :: BiConvertible2 t' t => forall s1 s2. Iso' (t s1 s2) (t' s1 s2)
- convertedTo3 :: BiConvertible3 t' t => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3)
- convertedTo4 :: BiConvertible4 t' t => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4)
- convertedTo5 :: BiConvertible5 t' t => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5)
- convertedTo' :: BiConvertible' t' t => Iso' t t'
- convertedTo1' :: BiConvertible1' t' t => forall s1. Iso' (t s1) (t' s1)
- convertedTo2' :: BiConvertible2' t' t => forall s1 s2. Iso' (t s1 s2) (t' s1 s2)
- convertedTo3' :: BiConvertible3' t' t => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3)
- convertedTo4' :: BiConvertible4' t' t => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4)
- convertedTo5' :: BiConvertible5' t' t => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5)
- type ConvertibleVia t p t' = (Convertible t p, Convertible p t')
- type ConvertibleVia1 t p t' = (Convertible1 t p, Convertible1 p t')
- type ConvertibleVia2 t p t' = (Convertible2 t p, Convertible2 p t')
- type ConvertibleVia3 t p t' = (Convertible3 t p, Convertible3 p t')
- type ConvertibleVia4 t p t' = (Convertible4 t p, Convertible4 p t')
- type ConvertibleVia5 t p t' = (Convertible5 t p, Convertible5 p t')
- convertVia :: forall p t t'. ConvertibleVia t p t' => t -> t'
- convertVia1 :: forall p t t'. ConvertibleVia1 t p t' => forall s1. t s1 -> t' s1
- convertVia2 :: forall p t t'. ConvertibleVia2 t p t' => forall s1 s2. t s1 s2 -> t' s1 s2
- convertVia3 :: forall p t t'. ConvertibleVia3 t p t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3
- convertVia4 :: forall p t t'. ConvertibleVia4 t p t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4
- convertVia5 :: forall p t t'. ConvertibleVia5 t p t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5
- type ConvertibleVia' t p t' = (Convertible' t p, Convertible' p t')
- type ConvertibleVia1' t p t' = (Convertible1' t p, Convertible1' p t')
- type ConvertibleVia2' t p t' = (Convertible2' t p, Convertible2' p t')
- type ConvertibleVia3' t p t' = (Convertible3' t p, Convertible3' p t')
- type ConvertibleVia4' t p t' = (Convertible4' t p, Convertible4' p t')
- type ConvertibleVia5' t p t' = (Convertible5' t p, Convertible5' p t')
- convertVia' :: forall p t t'. ConvertibleVia' t p t' => t -> t'
- convertVia1' :: forall p t t'. ConvertibleVia1' t p t' => forall s1. t s1 -> t' s1
- convertVia2' :: forall p t t'. ConvertibleVia2' t p t' => forall s1 s2. t s1 s2 -> t' s1 s2
- convertVia3' :: forall p t t'. ConvertibleVia3' t p t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3
- convertVia4' :: forall p t t'. ConvertibleVia4' t p t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4
- convertVia5' :: forall p t t'. ConvertibleVia5' t p t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5
- type PartialConvertibleVia t p t' = (PartialConvertible t p, PartialConvertible p t')
- unsafeConvertVia :: forall p t t'. PartialConvertibleVia t p t' => t -> t'
Documentation
class Convertible t t' where Source #
Convertible allows for conversion between two compatible types.
When trying to convert between the same types, compile time error is reported in order to help tracking not needed usages.
If you want to enable conversion between the same types, use convert'
instead.
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr * t) => Convertible t t Source # | |
Convertible1 * t t' => Convertible (t a) (t' a) Source # | |
(Convertible1 * t t', Convertible' a a', Functor t') => Convertible (t a) (t' a') Source # | |
(Convertible a a', Functor t) => Convertible (t a) (t a') Source # | We cannot use OVERLAPPABLE instances here. Let's consider following instance:
instance (s ~ s', t ~ t') => Convertible (Symbol s t) (Symbol2 s' t') where ...
By writing it we indicate that during conversion from Symbol to Symbol2 the appropriate variables should be matched.
If the following instances would be declared as OVERLAPPABLE, it will clash with the instance `Convertible (t a) (t' a)`.
In other words, if user defines any conversion between type `X a` and `Y b`, we disable automatic lifting to |
class Convertible1 t t' where Source #
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr (k -> *) t) => Convertible1 k t t Source # | |
Convertible2 k1 k2 t t' => Convertible1 k2 (t a) (t' a) Source # | |
class Convertible2 t t' where Source #
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr (k1 -> k2 -> *) t) => Convertible2 k1 k2 t t Source # | |
Convertible3 k1 k2 k3 t t' => Convertible2 k2 k3 (t a) (t' a) Source # | |
class Convertible3 t t' where Source #
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr (k1 -> k2 -> k3 -> *) t) => Convertible3 k1 k2 k3 t t Source # | |
Convertible4 k1 k2 k3 k4 t t' => Convertible3 k2 k3 k4 (t a) (t' a) Source # | |
class Convertible4 t t' where Source #
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr (k1 -> k2 -> k3 -> k4 -> *) t) => Convertible4 k1 k2 k3 k4 t t Source # | |
Convertible5 k1 k2 k3 k4 k5 t t' => Convertible4 k2 k3 k4 k5 (t a) (t' a) Source # | |
class Convertible5 t t' where Source #
Minimal complete definition
Instances
TypeError Constraint (IdConversionErr (k1 -> k2 -> k3 -> k4 -> k5 -> *) t) => Convertible5 k1 k2 k3 k4 k5 t t Source # | |
type IdConversionErr (t :: k) = (Text "Conversion of the same type (`" :<>: ShowType t) :<>: Text "`) is disabled by default. Please use convert' if you want to enable it." Source #
convertTo :: forall t' t. Convertible t t' => t -> t' Source #
convertTo1 :: forall t' t. Convertible1 t t' => forall s1. t s1 -> t' s1 Source #
convertTo2 :: forall t' t. Convertible2 t t' => forall s1 s2. t s1 s2 -> t' s1 s2 Source #
convertTo3 :: forall t' t. Convertible3 t t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3 Source #
convertTo4 :: forall t' t. Convertible4 t t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4 Source #
convertTo5 :: forall t' t. Convertible5 t t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5 Source #
class Convertible' t t' where Source #
Minimal complete definition
Instances
Convertible t t' => Convertible' t t' Source # | |
Convertible' t t Source # | |
class Convertible1' t t' where Source #
Minimal complete definition
Instances
Convertible1 k t t' => Convertible1' k t t' Source # | |
Convertible1' k t t Source # | |
class Convertible2' t t' where Source #
Minimal complete definition
Instances
Convertible2 k1 k2 t t' => Convertible2' k1 k2 t t' Source # | |
Convertible2' k1 k2 t t Source # | |
class Convertible3' t t' where Source #
Minimal complete definition
Instances
Convertible3 k1 k2 k3 t t' => Convertible3' k1 k2 k3 t t' Source # | |
Convertible3' k1 k2 k3 t t Source # | |
class Convertible4' t t' where Source #
Minimal complete definition
Instances
Convertible4 k1 k2 k3 k4 t t' => Convertible4' k1 k2 k3 k4 t t' Source # | |
Convertible4' k1 k2 k3 k4 t t Source # | |
class Convertible5' t t' where Source #
Minimal complete definition
Instances
Convertible5 k1 k2 k3 k4 k5 t t' => Convertible5' k1 k2 k3 k4 k5 t t' Source # | |
Convertible5' k1 k2 k3 k4 k5 t t Source # | |
convertTo' :: forall t' t. Convertible' t t' => t -> t' Source #
convertTo1' :: forall t' t. Convertible1' t t' => forall s1. t s1 -> t' s1 Source #
convertTo2' :: forall t' t. Convertible2' t t' => forall s1 s2. t s1 s2 -> t' s1 s2 Source #
convertTo3' :: forall t' t. Convertible3' t t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3 Source #
convertTo4' :: forall t' t. Convertible4' t t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4 Source #
convertTo5' :: forall t' t. Convertible5' t t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5 Source #
class PartialConvertible t t' where Source #
PartialConvertible allows conversions that could fail with ConversionError
.
Minimal complete definition
Associated Types
type ConversionError t t' Source #
unsafeConvertTo :: forall t' t. PartialConvertible t t' => t -> t' Source #
convertAssertTo :: forall t' t. PartialConvertible t t' => t -> Maybe (ConversionError t t') Source #
maybeConvert :: forall t t'. PartialConvertible t t' => t -> Maybe t' Source #
tryConvert :: forall t t'. PartialConvertible t t' => t -> Either (ConversionError t t') t' Source #
type BiConvertible t t' = (Convertible t t', Convertible t' t) Source #
type BiConvertible1 t t' = (Convertible1 t t', Convertible1 t' t) Source #
type BiConvertible2 t t' = (Convertible2 t t', Convertible2 t' t) Source #
type BiConvertible3 t t' = (Convertible3 t t', Convertible3 t' t) Source #
type BiConvertible4 t t' = (Convertible4 t t', Convertible4 t' t) Source #
type BiConvertible5 t t' = (Convertible5 t t', Convertible5 t' t) Source #
type BiConvertible' t t' = (Convertible' t t', Convertible' t' t) Source #
type BiConvertible1' t t' = (Convertible1' t t', Convertible1' t' t) Source #
type BiConvertible2' t t' = (Convertible2' t t', Convertible2' t' t) Source #
type BiConvertible3' t t' = (Convertible3' t t', Convertible3' t' t) Source #
type BiConvertible4' t t' = (Convertible4' t t', Convertible4' t' t) Source #
type BiConvertible5' t t' = (Convertible5' t t', Convertible5' t' t) Source #
type BiPartialConvertible t t' = (PartialConvertible t t', PartialConvertible t t') Source #
converted :: BiConvertible t t' => Iso' t t' Source #
converted1 :: BiConvertible1 t t' => forall s1. Iso' (t s1) (t' s1) Source #
converted2 :: BiConvertible2 t t' => forall s1 s2. Iso' (t s1 s2) (t' s1 s2) Source #
converted3 :: BiConvertible3 t t' => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3) Source #
converted4 :: BiConvertible4 t t' => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4) Source #
converted5 :: BiConvertible5 t t' => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5) Source #
converted' :: BiConvertible' t t' => Iso' t t' Source #
converted1' :: BiConvertible1' t t' => forall s1. Iso' (t s1) (t' s1) Source #
converted2' :: BiConvertible2' t t' => forall s1 s2. Iso' (t s1 s2) (t' s1 s2) Source #
converted3' :: BiConvertible3' t t' => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3) Source #
converted4' :: BiConvertible4' t t' => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4) Source #
converted5' :: BiConvertible5' t t' => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5) Source #
convertedTo :: BiConvertible t' t => Iso' t t' Source #
convertedTo1 :: BiConvertible1 t' t => forall s1. Iso' (t s1) (t' s1) Source #
convertedTo2 :: BiConvertible2 t' t => forall s1 s2. Iso' (t s1 s2) (t' s1 s2) Source #
convertedTo3 :: BiConvertible3 t' t => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3) Source #
convertedTo4 :: BiConvertible4 t' t => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4) Source #
convertedTo5 :: BiConvertible5 t' t => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5) Source #
convertedTo' :: BiConvertible' t' t => Iso' t t' Source #
convertedTo1' :: BiConvertible1' t' t => forall s1. Iso' (t s1) (t' s1) Source #
convertedTo2' :: BiConvertible2' t' t => forall s1 s2. Iso' (t s1 s2) (t' s1 s2) Source #
convertedTo3' :: BiConvertible3' t' t => forall s1 s2 s3. Iso' (t s1 s2 s3) (t' s1 s2 s3) Source #
convertedTo4' :: BiConvertible4' t' t => forall s1 s2 s3 s4. Iso' (t s1 s2 s3 s4) (t' s1 s2 s3 s4) Source #
convertedTo5' :: BiConvertible5' t' t => forall s1 s2 s3 s4 s5. Iso' (t s1 s2 s3 s4 s5) (t' s1 s2 s3 s4 s5) Source #
type ConvertibleVia t p t' = (Convertible t p, Convertible p t') Source #
type ConvertibleVia1 t p t' = (Convertible1 t p, Convertible1 p t') Source #
type ConvertibleVia2 t p t' = (Convertible2 t p, Convertible2 p t') Source #
type ConvertibleVia3 t p t' = (Convertible3 t p, Convertible3 p t') Source #
type ConvertibleVia4 t p t' = (Convertible4 t p, Convertible4 p t') Source #
type ConvertibleVia5 t p t' = (Convertible5 t p, Convertible5 p t') Source #
convertVia :: forall p t t'. ConvertibleVia t p t' => t -> t' Source #
convertVia1 :: forall p t t'. ConvertibleVia1 t p t' => forall s1. t s1 -> t' s1 Source #
convertVia2 :: forall p t t'. ConvertibleVia2 t p t' => forall s1 s2. t s1 s2 -> t' s1 s2 Source #
convertVia3 :: forall p t t'. ConvertibleVia3 t p t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3 Source #
convertVia4 :: forall p t t'. ConvertibleVia4 t p t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4 Source #
convertVia5 :: forall p t t'. ConvertibleVia5 t p t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5 Source #
type ConvertibleVia' t p t' = (Convertible' t p, Convertible' p t') Source #
type ConvertibleVia1' t p t' = (Convertible1' t p, Convertible1' p t') Source #
type ConvertibleVia2' t p t' = (Convertible2' t p, Convertible2' p t') Source #
type ConvertibleVia3' t p t' = (Convertible3' t p, Convertible3' p t') Source #
type ConvertibleVia4' t p t' = (Convertible4' t p, Convertible4' p t') Source #
type ConvertibleVia5' t p t' = (Convertible5' t p, Convertible5' p t') Source #
convertVia' :: forall p t t'. ConvertibleVia' t p t' => t -> t' Source #
convertVia1' :: forall p t t'. ConvertibleVia1' t p t' => forall s1. t s1 -> t' s1 Source #
convertVia2' :: forall p t t'. ConvertibleVia2' t p t' => forall s1 s2. t s1 s2 -> t' s1 s2 Source #
convertVia3' :: forall p t t'. ConvertibleVia3' t p t' => forall s1 s2 s3. t s1 s2 s3 -> t' s1 s2 s3 Source #
convertVia4' :: forall p t t'. ConvertibleVia4' t p t' => forall s1 s2 s3 s4. t s1 s2 s3 s4 -> t' s1 s2 s3 s4 Source #
convertVia5' :: forall p t t'. ConvertibleVia5' t p t' => forall s1 s2 s3 s4 s5. t s1 s2 s3 s4 s5 -> t' s1 s2 s3 s4 s5 Source #
type PartialConvertibleVia t p t' = (PartialConvertible t p, PartialConvertible p t') Source #
unsafeConvertVia :: forall p t t'. PartialConvertibleVia t p t' => t -> t' Source #