-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Convert values from one type into another. -- -- Witch converts values from one type into another. @package witch @version 1.2.3.2 module Witch.Encoding -- | https://en.wikipedia.org/wiki/ISO/IEC_8859-1 type ISO_8859_1 = Tagged "ISO-8859-1" -- | The ISO_8859_1 encoding for strict ByteStrings. type Latin1S = ISO_8859_1 ByteString -- | The ISO_8859_1 encoding for lazy ByteStrings. type Latin1L = ISO_8859_1 ByteString -- | https://en.wikipedia.org/wiki/UTF-8 type UTF_8 = Tagged "UTF-8" -- | The UTF_8 encoding for strict ByteStrings. type Utf8S = UTF_8 ByteString -- | The UTF_8 encoding for lazy ByteStrings. type Utf8L = UTF_8 ByteString -- | https://en.wikipedia.org/wiki/UTF-16 type UTF_16LE = Tagged "UTF-16LE" -- | The UTF_16LE encoding for strict ByteStrings. type Utf16LS = UTF_16LE ByteString -- | The UTF_16LE encoding for lazy ByteStrings. type Utf16LL = UTF_16LE ByteString -- | https://en.wikipedia.org/wiki/UTF-16 type UTF_16BE = Tagged "UTF-16BE" -- | The UTF_16BE encoding for strict ByteStrings. type Utf16BS = UTF_16BE ByteString -- | The UTF_16BE encoding for lazy ByteStrings. type Utf16BL = UTF_16BE ByteString -- | https://en.wikipedia.org/wiki/UTF-32 type UTF_32LE = Tagged "UTF-32LE" -- | The UTF_32LE encoding for strict ByteStrings. type Utf32LS = UTF_32LE ByteString -- | The UTF_32LE encoding for lazy ByteStrings. type Utf32LL = UTF_32LE ByteString -- | https://en.wikipedia.org/wiki/UTF-32 type UTF_32BE = Tagged "UTF-32BE" -- | The UTF_32BE encoding for strict ByteStrings. type Utf32BS = UTF_32BE ByteString -- | The UTF_32BE encoding for lazy ByteStrings. type Utf32BL = UTF_32BE ByteString module Witch.From -- | This type class is for converting values from some source -- type into some other target type. The constraint -- From source target means that you can convert from a -- value of type source into a value of type target. -- -- This type class is for conversions that always succeed. If your -- conversion sometimes fails, consider implementing TryFrom -- instead. class From source target -- | This method implements the conversion of a value between types. At -- call sites you may prefer to use into instead. -- --
--   -- Avoid this:
--   from (x :: s)
--   
--   -- Prefer this (using [@TypeApplications@](https://downloads.haskell.org/ghc/9.6.1/docs/users_guide/exts/type_applications.html) language extension):
--   from @s x
--   
-- -- The default implementation of this method simply calls coerce, -- which works for types that have the same runtime representation. This -- means that for newtypes you do not need to implement this -- method at all. For example: -- --
--   >>> newtype Name = Name String
--   
--   >>> instance From Name String
--   
--   >>> instance From String Name
--   
from :: From source target => source -> target -- | This method implements the conversion of a value between types. At -- call sites you may prefer to use into instead. -- --
--   -- Avoid this:
--   from (x :: s)
--   
--   -- Prefer this (using [@TypeApplications@](https://downloads.haskell.org/ghc/9.6.1/docs/users_guide/exts/type_applications.html) language extension):
--   from @s x
--   
-- -- The default implementation of this method simply calls coerce, -- which works for types that have the same runtime representation. This -- means that for newtypes you do not need to implement this -- method at all. For example: -- --
--   >>> newtype Name = Name String
--   
--   >>> instance From Name String
--   
--   >>> instance From String Name
--   
from :: (From source target, Coercible source target) => source -> target module Witch.Generic -- | This type class is used to implement generic conversions using the -- Generically helper. This is an advanced use case. Most users -- will not need to know about this type class. And even for those that -- want to derive Generically, this type class should be an -- implementation detail. -- -- This type class can convert between any two types as long as they have -- Generic instances and they are structurally similar. For -- example, if you define your own empty type you could convert it to the -- typical Void type: -- --
--   data Empty deriving Generic
--   deriving via Generically Void instance From Empty Void
--   
-- -- Or your own unit type: -- --
--   data Unit = MkUnit deriving Generic
--   deriving via Generically () instance From Unit ()
--   
-- -- Note that this looks superficially similar to newtype Unit = -- MkUnit () together with instance From Unit (), but that -- goes through Coercible and requires the types to be -- representationally equal. This approach (with Generically) only -- requires the types to be structurally equal. In this case, -- Unit is structurally equal to () since they both -- have a single constructor with no arguments. -- -- This also works with arbitrary product types, like a custom pair type: -- --
--   data Pair a b = MkPair a b deriving Generic
--   deriving via Generically (Pair c d)
--     instance (From a c, From b d) => From (a, b) (Pair c d)
--   
-- -- Note that this can also convert the type variables as long as they -- have From instances as well. This allows converting from -- (Int, Int) to Pair Integer Integer in one step, for -- example. -- -- And this works with arbitrary sum types as well: -- --
--   data Result a b = Failure a | Success b deriving Generic
--   deriving via Generically (Result c d)
--     instance (From a c, From b d) => From (Either a b) (Result c d)
--   
-- -- Note that these conversions are all structural not semantic. -- That means if you had defined Result as Success b | -- Failure a, then converting from Either would be "wrong". -- Left would convert into Success and Right would -- convert into Failure. class GFrom s t gFrom :: GFrom s t => s x -> t x instance Witch.Generic.GFrom GHC.Generics.V1 GHC.Generics.V1 instance Witch.Generic.GFrom GHC.Generics.U1 GHC.Generics.U1 instance Witch.From.From s t => Witch.Generic.GFrom (GHC.Generics.K1 a s) (GHC.Generics.K1 b t) instance Witch.Generic.GFrom s t => Witch.Generic.GFrom (GHC.Generics.M1 a b s) (GHC.Generics.M1 c d t) instance (Witch.Generic.GFrom s1 t1, Witch.Generic.GFrom s2 t2) => Witch.Generic.GFrom (s1 GHC.Generics.:+: s2) (t1 GHC.Generics.:+: t2) instance (Witch.Generic.GFrom s1 t1, Witch.Generic.GFrom s2 t2) => Witch.Generic.GFrom (s1 GHC.Generics.:*: s2) (t1 GHC.Generics.:*: t2) instance (GHC.Generics.Generic s, GHC.Generics.Generic t, Witch.Generic.GFrom (GHC.Generics.Rep s) (GHC.Generics.Rep t)) => Witch.From.From s (GHC.Generics.Generically t) module Witch.TryFromException -- | This exception is thrown when a TryFrom conversion fails. It -- has the original source value that caused the failure and it -- knows the target type it was trying to convert into. It also -- has an optional SomeException for communicating what went wrong -- while converting. data TryFromException source target TryFromException :: source -> Maybe SomeException -> TryFromException source target instance (GHC.Show.Show source, Data.Typeable.Internal.Typeable source, Data.Typeable.Internal.Typeable target) => GHC.Show.Show (Witch.TryFromException.TryFromException source target) instance (GHC.Show.Show source, Data.Typeable.Internal.Typeable source, Data.Typeable.Internal.Typeable target) => GHC.Exception.Type.Exception (Witch.TryFromException.TryFromException source target) module Witch.TryFrom -- | This type class is for converting values from some source -- type into some other target type. The constraint -- TryFrom source target means that you may be able to -- convert from a value of type source into a value of type -- target, but that conversion may fail at runtime. -- -- This type class is for conversions that can sometimes fail. If your -- conversion always succeeds, consider implementing From -- instead. class TryFrom source target -- | This method implements the conversion of a value between types. At -- call sites you may want to use tryInto instead. -- --
--   -- Avoid this:
--   tryFrom (x :: s)
--   
--   -- Prefer this:
--   tryFrom @s
--   
-- -- Consider using maybeTryFrom or eitherTryFrom to -- implement this method. tryFrom :: TryFrom source target => source -> Either (TryFromException source target) target module Witch.Utility -- | This is the same as id. This can be an ergonomic way to pin -- down a polymorphic type in a function pipeline. For example: -- --
--   -- Avoid this:
--   f . (\ x -> x :: Int) . g
--   
--   -- Prefer this:
--   f . as @Int . g
--   
as :: forall source. source -> source -- | This is the same as from except that the type variables are in -- the opposite order. -- --
--   -- Avoid this:
--   from x :: t
--   
--   -- Prefer this:
--   into @t x
--   
into :: forall target source. From source target => source -> target -- | This function converts from some source type into some -- target type, applies the given function, then converts back -- into the source type. This is useful when you have two types -- that are isomorphic but some function that only works with one of -- them. -- --
--   -- Avoid this:
--   from @t . f . into @t
--   
--   -- Prefer this:
--   over @t f
--   
over :: forall target source. (From source target, From target source) => (target -> target) -> source -> source -- | This function first converts from some source type into some -- through type, and then converts that into some -- target type. Usually this is used when writing From -- instances. Sometimes this can be used to work around the lack of an -- instance that should probably exist. -- --
--   -- Avoid this:
--   from @u . into @u
--   
--   -- Prefer this:
--   via @u
--   
via :: forall through source target. (From source through, From through target) => source -> target -- | This is the same as tryFrom except that the type variables are -- in the opposite order. -- --
--   -- Avoid this:
--   tryFrom x :: Either (TryFromException s t) t
--   
--   -- Prefer this:
--   tryInto @t x
--   
tryInto :: forall target source. TryFrom source target => source -> Either (TryFromException source target) target -- | This is similar to via except that it works with TryFrom -- instances instead. This function is especially convenient because -- juggling the types in the TryFromException can be tedious. -- --
--   -- Avoid this:
--   case tryInto @u x of
--     Left (TryFromException _ e) -> Left $ TryFromException x e
--     Right y -> case tryFrom @u y of
--       Left (TryFromException _ e) -> Left $ TryFromException x e
--       Right z -> Right z
--   
--   -- Prefer this:
--   tryVia @u
--   
tryVia :: forall through source target. (TryFrom source through, TryFrom through target) => source -> Either (TryFromException source target) target -- | This function can be used to implement tryFrom with a function -- that returns Maybe. For example: -- --
--   -- Avoid this:
--   tryFrom s = case f s of
--     Nothing -> Left $ TryFromException s Nothing
--     Just t -> Right t
--   
--   -- Prefer this:
--   tryFrom = maybeTryFrom f
--   
maybeTryFrom :: (source -> Maybe target) -> source -> Either (TryFromException source target) target -- | This function can be used to implement tryFrom with a function -- that returns Either. For example: -- --
--   -- Avoid this:
--   tryFrom s = case f s of
--     Left e -> Left . TryFromException s . Just $ toException e
--     Right t -> Right t
--   
--   -- Prefer this:
--   tryFrom = eitherTryFrom f
--   
eitherTryFrom :: Exception exception => (source -> Either exception target) -> source -> Either (TryFromException source target) target -- | This function is like tryFrom except that it will throw an -- impure exception if the conversion fails. -- --
--   -- Avoid this:
--   either throw id . tryFrom @s
--   
--   -- Prefer this:
--   unsafeFrom @s
--   
unsafeFrom :: forall source target. (HasCallStack, TryFrom source target, Show source, Typeable source, Typeable target) => source -> target -- | This function is like tryInto except that it will throw an -- impure exception if the conversion fails. -- --
--   -- Avoid this:
--   either throw id . tryInto @t
--   
--   -- Prefer this:
--   unsafeInto @t
--   
unsafeInto :: forall target source. (HasCallStack, TryFrom source target, Show source, Typeable source, Typeable target) => source -> target withSource :: newSource -> TryFromException oldSource target -> TryFromException newSource target withTarget :: forall newTarget source oldTarget. TryFromException source oldTarget -> TryFromException source newTarget module Witch.Lift -- | This is like unsafeFrom except that it works at compile time -- rather than runtime. -- --
--   -- Avoid this:
--   unsafeFrom @s "some literal"
--   
--   -- Prefer this:
--   $$(liftedFrom @s "some literal")
--   
liftedFrom :: forall source target m. (TryFrom source target, Lift target, Show source, Typeable source, Typeable target, Quote m) => source -> Code m target -- | This is like unsafeInto except that it works at compile time -- rather than runtime. -- --
--   -- Avoid this:
--   unsafeInto @t "some literal"
--   
--   -- Prefer this:
--   $$(liftedInto @t "some literal")
--   
liftedInto :: forall target source m. (TryFrom source target, Lift target, Show source, Typeable source, Typeable target, Quote m) => source -> Code m target module Witch.Instances realFloatToRational :: RealFloat s => s -> Either ArithException Rational overPositive :: (Eq a, Num a, Num b) => (a -> b) -> a -> b fromDigits :: [Int] -> Int -> (Integer, Integer) makeRational :: Integer -> Integer -> Rational fromNonNegativeIntegral :: (Integral s, Num t) => s -> Either ArithException t -- | The maximum integral value that can be unambiguously represented as a -- Float. Equal to 16,777,215. maxFloat :: Num a => a -- | The maximum integral value that can be unambiguously represented as a -- Double. Equal to 9,007,199,254,740,991. maxDouble :: Num a => a tryEvaluate :: Exception e => a -> Either e a instance Witch.From.From a a instance Witch.From.From GHC.Int.Int8 GHC.Int.Int16 instance Witch.From.From GHC.Int.Int8 GHC.Int.Int32 instance Witch.From.From GHC.Int.Int8 GHC.Int.Int64 instance Witch.From.From GHC.Int.Int8 GHC.Types.Int instance Witch.From.From GHC.Int.Int8 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Int.Int8 GHC.Num.Natural.Natural instance Witch.From.From GHC.Int.Int8 GHC.Types.Float instance Witch.From.From GHC.Int.Int8 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Int.Int8 instance Witch.From.From GHC.Int.Int16 GHC.Int.Int32 instance Witch.From.From GHC.Int.Int16 GHC.Int.Int64 instance Witch.From.From GHC.Int.Int16 GHC.Types.Int instance Witch.From.From GHC.Int.Int16 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Int.Int16 GHC.Num.Natural.Natural instance Witch.From.From GHC.Int.Int16 GHC.Types.Float instance Witch.From.From GHC.Int.Int16 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Int.Int16 instance Witch.From.From GHC.Int.Int32 GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Types.Int instance Witch.From.From GHC.Int.Int32 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Int.Int32 GHC.Types.Float instance Witch.From.From GHC.Int.Int32 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Types.Int instance Witch.From.From GHC.Int.Int64 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Int.Int64 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Int.Int32 instance Witch.From.From GHC.Types.Int GHC.Int.Int64 instance Witch.From.From GHC.Types.Int GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Types.Int GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Types.Int instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Num.Integer.Integer GHC.Types.Double instance Witch.From.From GHC.Word.Word8 GHC.Word.Word16 instance Witch.From.From GHC.Word.Word8 GHC.Word.Word32 instance Witch.From.From GHC.Word.Word8 GHC.Word.Word64 instance Witch.From.From GHC.Word.Word8 GHC.Types.Word instance Witch.From.From GHC.Word.Word8 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Word.Word8 GHC.Int.Int8 instance Witch.From.From GHC.Word.Word8 GHC.Int.Int16 instance Witch.From.From GHC.Word.Word8 GHC.Int.Int32 instance Witch.From.From GHC.Word.Word8 GHC.Int.Int64 instance Witch.From.From GHC.Word.Word8 GHC.Types.Int instance Witch.From.From GHC.Word.Word8 GHC.Num.Integer.Integer instance Witch.From.From GHC.Word.Word8 GHC.Types.Float instance Witch.From.From GHC.Word.Word8 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Word.Word16 GHC.Word.Word8 instance Witch.From.From GHC.Word.Word16 GHC.Word.Word32 instance Witch.From.From GHC.Word.Word16 GHC.Word.Word64 instance Witch.From.From GHC.Word.Word16 GHC.Types.Word instance Witch.From.From GHC.Word.Word16 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Word.Word16 GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Word.Word16 GHC.Int.Int16 instance Witch.From.From GHC.Word.Word16 GHC.Int.Int32 instance Witch.From.From GHC.Word.Word16 GHC.Int.Int64 instance Witch.From.From GHC.Word.Word16 GHC.Types.Int instance Witch.From.From GHC.Word.Word16 GHC.Num.Integer.Integer instance Witch.From.From GHC.Word.Word16 GHC.Types.Float instance Witch.From.From GHC.Word.Word16 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Word.Word16 instance Witch.From.From GHC.Word.Word32 GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Types.Word instance Witch.From.From GHC.Word.Word32 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Int.Int32 instance Witch.From.From GHC.Word.Word32 GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Types.Int instance Witch.From.From GHC.Word.Word32 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Word.Word32 GHC.Types.Float instance Witch.From.From GHC.Word.Word32 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Types.Word instance Witch.From.From GHC.Word.Word64 GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Types.Int instance Witch.From.From GHC.Word.Word64 GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Word.Word64 GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Word.Word32 instance Witch.From.From GHC.Types.Word GHC.Word.Word64 instance Witch.From.From GHC.Types.Word GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Types.Int instance Witch.From.From GHC.Types.Word GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Types.Word GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Types.Int instance Witch.From.From GHC.Num.Natural.Natural GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Types.Float instance Witch.TryFrom.TryFrom GHC.Num.Natural.Natural GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Types.Int instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Types.Float GHC.Real.Rational instance Witch.From.From GHC.Types.Float GHC.Types.Double instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Int.Int8 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Int.Int16 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Int.Int32 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Int.Int64 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Types.Int instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Num.Integer.Integer instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Word.Word8 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Word.Word16 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Word.Word32 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Word.Word64 instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Types.Word instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Num.Natural.Natural instance Witch.TryFrom.TryFrom GHC.Types.Double GHC.Real.Rational instance Witch.From.From GHC.Types.Double GHC.Types.Float instance GHC.Real.Integral a => Witch.From.From a (GHC.Real.Ratio a) instance (GHC.Classes.Eq a, GHC.Num.Num a) => Witch.TryFrom.TryFrom (GHC.Real.Ratio a) a instance Witch.From.From GHC.Real.Rational GHC.Types.Float instance Witch.From.From GHC.Real.Rational GHC.Types.Double instance forall k (a :: k). Data.Fixed.HasResolution a => Witch.TryFrom.TryFrom GHC.Real.Rational (Data.Fixed.Fixed a) instance forall k (a :: k). Witch.From.From GHC.Num.Integer.Integer (Data.Fixed.Fixed a) instance forall k (a :: k). Witch.From.From (Data.Fixed.Fixed a) GHC.Num.Integer.Integer instance forall k (a :: k). Data.Fixed.HasResolution a => Witch.From.From (Data.Fixed.Fixed a) GHC.Real.Rational instance GHC.Num.Num a => Witch.From.From a (Data.Complex.Complex a) instance (GHC.Classes.Eq a, GHC.Num.Num a) => Witch.TryFrom.TryFrom (Data.Complex.Complex a) a instance Witch.TryFrom.TryFrom [a] (GHC.Base.NonEmpty a) instance Witch.From.From (GHC.Base.NonEmpty a) [a] instance GHC.Classes.Ord a => Witch.From.From [a] (Data.Set.Internal.Set a) instance Witch.From.From (Data.Set.Internal.Set a) [a] instance Witch.From.From [GHC.Types.Int] Data.IntSet.Internal.IntSet instance Witch.From.From Data.IntSet.Internal.IntSet [GHC.Types.Int] instance GHC.Classes.Ord k => Witch.From.From [(k, v)] (Data.Map.Internal.Map k v) instance Witch.From.From (Data.Map.Internal.Map k v) [(k, v)] instance Witch.From.From [(GHC.Types.Int, v)] (Data.IntMap.Internal.IntMap v) instance Witch.From.From (Data.IntMap.Internal.IntMap v) [(GHC.Types.Int, v)] instance Witch.From.From [a] (Data.Sequence.Internal.Seq a) instance Witch.From.From (Data.Sequence.Internal.Seq a) [a] instance Witch.From.From [GHC.Word.Word8] Data.ByteString.Internal.Type.ByteString instance Witch.From.From Data.ByteString.Internal.Type.ByteString [GHC.Word.Word8] instance Witch.From.From Data.ByteString.Internal.Type.ByteString Data.ByteString.Lazy.Internal.ByteString instance Witch.From.From Data.ByteString.Internal.Type.ByteString Data.ByteString.Short.Internal.ShortByteString instance Witch.From.From [GHC.Word.Word8] Data.ByteString.Lazy.Internal.ByteString instance Witch.From.From Data.ByteString.Lazy.Internal.ByteString [GHC.Word.Word8] instance Witch.From.From Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Internal.Type.ByteString instance Witch.From.From [GHC.Word.Word8] Data.ByteString.Short.Internal.ShortByteString instance Witch.From.From Data.ByteString.Short.Internal.ShortByteString [GHC.Word.Word8] instance Witch.From.From Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Internal.Type.ByteString instance Witch.From.From Data.Text.Internal.Text Data.Text.Internal.Lazy.Text instance Witch.From.From Data.Text.Internal.Lazy.Text Data.Text.Internal.Text instance Witch.From.From GHC.Base.String Data.Text.Internal.Text instance Witch.From.From Data.Text.Internal.Text GHC.Base.String instance Witch.From.From GHC.Base.String Data.Text.Internal.Lazy.Text instance Witch.From.From Data.Text.Internal.Lazy.Text GHC.Base.String instance Witch.From.From (Witch.TryFromException.TryFromException source oldTarget) (Witch.TryFromException.TryFromException source newTarget) instance Witch.From.From GHC.Num.Integer.Integer Data.Time.Calendar.Days.Day instance Witch.From.From Data.Time.Calendar.Days.Day GHC.Num.Integer.Integer instance Witch.From.From Data.Time.Calendar.Days.Day Data.Time.Calendar.Week.DayOfWeek instance Witch.From.From GHC.Real.Rational Data.Time.Clock.Internal.UniversalTime.UniversalTime instance Witch.From.From Data.Time.Clock.Internal.UniversalTime.UniversalTime GHC.Real.Rational instance Witch.From.From Data.Fixed.Pico Data.Time.Clock.Internal.DiffTime.DiffTime instance Witch.From.From Data.Time.Clock.Internal.DiffTime.DiffTime Data.Fixed.Pico instance Witch.From.From Data.Fixed.Pico Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime instance Witch.From.From Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime Data.Fixed.Pico instance Witch.From.From Data.Time.Clock.Internal.SystemTime.SystemTime Data.Time.Clock.Internal.POSIXTime.POSIXTime instance Witch.From.From Data.Time.Clock.Internal.UTCTime.UTCTime Data.Time.Clock.Internal.POSIXTime.POSIXTime instance Witch.From.From Data.Time.Clock.Internal.POSIXTime.POSIXTime Data.Time.Clock.Internal.UTCTime.UTCTime instance Witch.From.From Data.Time.Clock.Internal.UTCTime.UTCTime Data.Time.Clock.Internal.SystemTime.SystemTime instance Witch.From.From Data.Time.Clock.Internal.SystemTime.SystemTime Data.Time.Clock.Internal.AbsoluteTime.AbsoluteTime instance Witch.From.From Data.Time.Clock.Internal.SystemTime.SystemTime Data.Time.Clock.Internal.UTCTime.UTCTime instance Witch.From.From Data.Time.Clock.Internal.DiffTime.DiffTime Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay instance Witch.From.From GHC.Real.Rational Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay instance Witch.From.From Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay Data.Time.Clock.Internal.DiffTime.DiffTime instance Witch.From.From Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay GHC.Real.Rational instance Witch.From.From Data.Time.Calendar.CalendarDiffDays.CalendarDiffDays Data.Time.LocalTime.Internal.CalendarDiffTime.CalendarDiffTime instance Witch.From.From Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime Data.Time.LocalTime.Internal.CalendarDiffTime.CalendarDiffTime instance Witch.From.From Data.Time.LocalTime.Internal.ZonedTime.ZonedTime Data.Time.Clock.Internal.UTCTime.UTCTime instance forall k a (t :: k). Witch.From.From a (Data.Tagged.Tagged t a) instance forall k (t :: k) a. Witch.From.From (Data.Tagged.Tagged t a) a instance forall k1 k2 (t :: k1) a (u :: k2). Witch.From.From (Data.Tagged.Tagged t a) (Data.Tagged.Tagged u a) instance Witch.From.From Witch.Encoding.Latin1S Data.Text.Internal.Text instance Witch.From.From Witch.Encoding.Latin1S Data.Text.Internal.Lazy.Text instance Witch.From.From Witch.Encoding.Latin1S GHC.Base.String instance Witch.From.From Witch.Encoding.Latin1L Data.Text.Internal.Lazy.Text instance Witch.From.From Witch.Encoding.Latin1L Data.Text.Internal.Text instance Witch.From.From Witch.Encoding.Latin1L GHC.Base.String instance Witch.TryFrom.TryFrom Data.Text.Internal.Text Witch.Encoding.Latin1S instance Witch.TryFrom.TryFrom Data.Text.Internal.Text Witch.Encoding.Latin1L instance Witch.TryFrom.TryFrom Data.Text.Internal.Lazy.Text Witch.Encoding.Latin1L instance Witch.TryFrom.TryFrom Data.Text.Internal.Lazy.Text Witch.Encoding.Latin1S instance Witch.TryFrom.TryFrom GHC.Base.String Witch.Encoding.Latin1S instance Witch.TryFrom.TryFrom GHC.Base.String Witch.Encoding.Latin1L instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8S Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8S Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8S GHC.Base.String instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8L Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8L Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf8L GHC.Base.String instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf8S instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf8L instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf8L instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf8S instance Witch.From.From GHC.Base.String Witch.Encoding.Utf8S instance Witch.From.From GHC.Base.String Witch.Encoding.Utf8L instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LS Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LS Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LS GHC.Base.String instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LL Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LL Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16LL GHC.Base.String instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf16LS instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf16LL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf16LL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf16LS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf16LS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf16LL instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BS Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BS Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BS GHC.Base.String instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BL Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BL Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf16BL GHC.Base.String instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf16BS instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf16BL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf16BL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf16BS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf16BS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf16BL instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LS Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LS Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LS GHC.Base.String instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LL Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LL Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32LL GHC.Base.String instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf32LS instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf32LL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf32LL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf32LS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf32LS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf32LL instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BS Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BS Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BS GHC.Base.String instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BL Data.Text.Internal.Lazy.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BL Data.Text.Internal.Text instance Witch.TryFrom.TryFrom Witch.Encoding.Utf32BL GHC.Base.String instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf32BS instance Witch.From.From Data.Text.Internal.Text Witch.Encoding.Utf32BL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf32BL instance Witch.From.From Data.Text.Internal.Lazy.Text Witch.Encoding.Utf32BS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf32BS instance Witch.From.From GHC.Base.String Witch.Encoding.Utf32BL -- | The Witch package is a library that allows you to confidently convert -- values between various types. This module exports everything you need -- to perform conversions or define your own. It is designed to be -- imported unqualified, so getting started is as easy as: -- --
--   >>> import Witch
--   
-- -- In typical usage, the functions that you will use most often are -- into for conversions that always succeed and tryInto for -- conversions that sometimes fail. -- -- Please consider reading the blog post that announces this library: -- https://taylor.fausak.me/2021/07/13/witch/ module Witch -- | This type class is for converting values from some source -- type into some other target type. The constraint -- From source target means that you can convert from a -- value of type source into a value of type target. -- -- This type class is for conversions that always succeed. If your -- conversion sometimes fails, consider implementing TryFrom -- instead. class From source target -- | This method implements the conversion of a value between types. At -- call sites you may prefer to use into instead. -- --
--   -- Avoid this:
--   from (x :: s)
--   
--   -- Prefer this (using [@TypeApplications@](https://downloads.haskell.org/ghc/9.6.1/docs/users_guide/exts/type_applications.html) language extension):
--   from @s x
--   
-- -- The default implementation of this method simply calls coerce, -- which works for types that have the same runtime representation. This -- means that for newtypes you do not need to implement this -- method at all. For example: -- --
--   >>> newtype Name = Name String
--   
--   >>> instance From Name String
--   
--   >>> instance From String Name
--   
from :: From source target => source -> target -- | This method implements the conversion of a value between types. At -- call sites you may prefer to use into instead. -- --
--   -- Avoid this:
--   from (x :: s)
--   
--   -- Prefer this (using [@TypeApplications@](https://downloads.haskell.org/ghc/9.6.1/docs/users_guide/exts/type_applications.html) language extension):
--   from @s x
--   
-- -- The default implementation of this method simply calls coerce, -- which works for types that have the same runtime representation. This -- means that for newtypes you do not need to implement this -- method at all. For example: -- --
--   >>> newtype Name = Name String
--   
--   >>> instance From Name String
--   
--   >>> instance From String Name
--   
from :: (From source target, Coercible source target) => source -> target -- | This is the same as from except that the type variables are in -- the opposite order. -- --
--   -- Avoid this:
--   from x :: t
--   
--   -- Prefer this:
--   into @t x
--   
into :: forall target source. From source target => source -> target -- | This type class is for converting values from some source -- type into some other target type. The constraint -- TryFrom source target means that you may be able to -- convert from a value of type source into a value of type -- target, but that conversion may fail at runtime. -- -- This type class is for conversions that can sometimes fail. If your -- conversion always succeeds, consider implementing From -- instead. class TryFrom source target -- | This method implements the conversion of a value between types. At -- call sites you may want to use tryInto instead. -- --
--   -- Avoid this:
--   tryFrom (x :: s)
--   
--   -- Prefer this:
--   tryFrom @s
--   
-- -- Consider using maybeTryFrom or eitherTryFrom to -- implement this method. tryFrom :: TryFrom source target => source -> Either (TryFromException source target) target -- | This is the same as tryFrom except that the type variables are -- in the opposite order. -- --
--   -- Avoid this:
--   tryFrom x :: Either (TryFromException s t) t
--   
--   -- Prefer this:
--   tryInto @t x
--   
tryInto :: forall target source. TryFrom source target => source -> Either (TryFromException source target) target -- | This exception is thrown when a TryFrom conversion fails. It -- has the original source value that caused the failure and it -- knows the target type it was trying to convert into. It also -- has an optional SomeException for communicating what went wrong -- while converting. data TryFromException source target TryFromException :: source -> Maybe SomeException -> TryFromException source target -- | The ISO_8859_1 encoding for strict ByteStrings. type Latin1S = ISO_8859_1 ByteString -- | The ISO_8859_1 encoding for lazy ByteStrings. type Latin1L = ISO_8859_1 ByteString -- | https://en.wikipedia.org/wiki/ISO/IEC_8859-1 type ISO_8859_1 = Tagged "ISO-8859-1" -- | The UTF_8 encoding for strict ByteStrings. type Utf8S = UTF_8 ByteString -- | The UTF_8 encoding for lazy ByteStrings. type Utf8L = UTF_8 ByteString -- | https://en.wikipedia.org/wiki/UTF-8 type UTF_8 = Tagged "UTF-8" -- | The UTF_16LE encoding for strict ByteStrings. type Utf16LS = UTF_16LE ByteString -- | The UTF_16LE encoding for lazy ByteStrings. type Utf16LL = UTF_16LE ByteString -- | https://en.wikipedia.org/wiki/UTF-16 type UTF_16LE = Tagged "UTF-16LE" -- | The UTF_16BE encoding for strict ByteStrings. type Utf16BS = UTF_16BE ByteString -- | The UTF_16BE encoding for lazy ByteStrings. type Utf16BL = UTF_16BE ByteString -- | https://en.wikipedia.org/wiki/UTF-16 type UTF_16BE = Tagged "UTF-16BE" -- | The UTF_32LE encoding for strict ByteStrings. type Utf32LS = UTF_32LE ByteString -- | The UTF_32LE encoding for lazy ByteStrings. type Utf32LL = UTF_32LE ByteString -- | https://en.wikipedia.org/wiki/UTF-32 type UTF_32LE = Tagged "UTF-32LE" -- | The UTF_32BE encoding for strict ByteStrings. type Utf32BS = UTF_32BE ByteString -- | The UTF_32BE encoding for lazy ByteStrings. type Utf32BL = UTF_32BE ByteString -- | https://en.wikipedia.org/wiki/UTF-32 type UTF_32BE = Tagged "UTF-32BE" -- | This function first converts from some source type into some -- through type, and then converts that into some -- target type. Usually this is used when writing From -- instances. Sometimes this can be used to work around the lack of an -- instance that should probably exist. -- --
--   -- Avoid this:
--   from @u . into @u
--   
--   -- Prefer this:
--   via @u
--   
via :: forall through source target. (From source through, From through target) => source -> target -- | This is similar to via except that it works with TryFrom -- instances instead. This function is especially convenient because -- juggling the types in the TryFromException can be tedious. -- --
--   -- Avoid this:
--   case tryInto @u x of
--     Left (TryFromException _ e) -> Left $ TryFromException x e
--     Right y -> case tryFrom @u y of
--       Left (TryFromException _ e) -> Left $ TryFromException x e
--       Right z -> Right z
--   
--   -- Prefer this:
--   tryVia @u
--   
tryVia :: forall through source target. (TryFrom source through, TryFrom through target) => source -> Either (TryFromException source target) target -- | This function can be used to implement tryFrom with a function -- that returns Maybe. For example: -- --
--   -- Avoid this:
--   tryFrom s = case f s of
--     Nothing -> Left $ TryFromException s Nothing
--     Just t -> Right t
--   
--   -- Prefer this:
--   tryFrom = maybeTryFrom f
--   
maybeTryFrom :: (source -> Maybe target) -> source -> Either (TryFromException source target) target -- | This function can be used to implement tryFrom with a function -- that returns Either. For example: -- --
--   -- Avoid this:
--   tryFrom s = case f s of
--     Left e -> Left . TryFromException s . Just $ toException e
--     Right t -> Right t
--   
--   -- Prefer this:
--   tryFrom = eitherTryFrom f
--   
eitherTryFrom :: Exception exception => (source -> Either exception target) -> source -> Either (TryFromException source target) target -- | This function is like tryFrom except that it will throw an -- impure exception if the conversion fails. -- --
--   -- Avoid this:
--   either throw id . tryFrom @s
--   
--   -- Prefer this:
--   unsafeFrom @s
--   
unsafeFrom :: forall source target. (HasCallStack, TryFrom source target, Show source, Typeable source, Typeable target) => source -> target -- | This function is like tryInto except that it will throw an -- impure exception if the conversion fails. -- --
--   -- Avoid this:
--   either throw id . tryInto @t
--   
--   -- Prefer this:
--   unsafeInto @t
--   
unsafeInto :: forall target source. (HasCallStack, TryFrom source target, Show source, Typeable source, Typeable target) => source -> target -- | This is like unsafeFrom except that it works at compile time -- rather than runtime. -- --
--   -- Avoid this:
--   unsafeFrom @s "some literal"
--   
--   -- Prefer this:
--   $$(liftedFrom @s "some literal")
--   
liftedFrom :: forall source target m. (TryFrom source target, Lift target, Show source, Typeable source, Typeable target, Quote m) => source -> Code m target -- | This is like unsafeInto except that it works at compile time -- rather than runtime. -- --
--   -- Avoid this:
--   unsafeInto @t "some literal"
--   
--   -- Prefer this:
--   $$(liftedInto @t "some literal")
--   
liftedInto :: forall target source m. (TryFrom source target, Lift target, Show source, Typeable source, Typeable target, Quote m) => source -> Code m target