Safe Haskell | None |
---|---|
Language | Haskell2010 |
- 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.
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 #
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 #
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 #
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 #
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 #
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 #
Convertible t t' => Convertible' t t' Source # | |
Convertible' t t Source # | |
class Convertible1' t t' where Source #
Convertible1 k t t' => Convertible1' k t t' Source # | |
Convertible1' k t t Source # | |
class Convertible2' t t' where Source #
Convertible2 k1 k2 t t' => Convertible2' k1 k2 t t' Source # | |
Convertible2' k1 k2 t t Source # | |
class Convertible3' t t' where Source #
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 #
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 #
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 #
data SimpleConversionError Source #
class PartialConvertible t t' where Source #
PartialConvertible allows conversions that could fail with ConversionError
.
type ConversionError t t' Source #
convertAssert :: t -> Maybe (ConversionError t t') Source #
unsafeConvert :: 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 #