h$J`B      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None9Zwitch3This type class is for converting values from some source type into some other target type. The constraint Cast source target2 measn that you can convert from a value of type source into a value of type target.This type class is for conversions that cannot fail. If your conversion can fail, consider implementing TryCast instead.witchThis method implements the conversion of a value between types. At call sites you will usually want to use from or into instead of this method.7The default implementation of this method simply calls , 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 Stringinstance Cast Name Stringinstance Cast String NameNone> witchThis type mostly exists to make it easier to derive instances through some other type. It does this by leaning on the 3 type class. For example, consider this data type: data Toggle = Off | On instance Cast Toggle String where cast toggle = case toggle of Off -> "off" On -> "on"If you wanted to implement a  instance for Toggle by going through a ., you would need to write something like this: 7instance Show Toggle where show = show . into @StringThat may not very complicated, but at the same time it is not very interesting. And it can be tricky if you want to keep other instances (like ) in sync. That's where the ; type comes in! You can derive the above instance like so: data Toggle = Off | On deriving Show via Casting Toggle String witchUses coerce. witchUses coerce. Safe-Inferred w witch=Never use this type for anything! It only exists to make the   type family non-trivial. witchThis is an ugly hack used to make GHC require type applications for certain functions. See this Twitter thread for a discussion:  ;https://twitter.com/taylorfausak/status/1329084033003782148.   Safe-Inferredwitch This exception is thrown when a TryCast( conversion fails. It has the original source0 value that caused the failure and it knows the target? type it was trying to convert into. It also has an optional 5 for communicating what went wrong while converting. Safe-Inferredwitch3This type class is for converting values from some source type into some other target type. The constraint TryCast 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 fail. If your conversion cannot fail, consider implementing Cast instead.witchThis method implements the conversion of a value between types. At call sites you will usually want to use tryFrom or tryInto instead of this method.Consider using  maybeTryCast or  eitherTryCast to implement this method.NoneB witchThis is the same as  except that it requires a type application. 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 . gwitchThis is the same as 5 except that it requires a type application for the source type. 7-- Avoid this: cast (x :: s) -- Prefer this: from @s xwitchThis is the same as 5 except that it requires a type application for the target type. 5-- Avoid this: cast x :: t -- Prefer this: into @t xwitch!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 fwitch'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  instances. Sometimes this can be used to work around the lack of an instance that should probably exist. 8-- Avoid this: from @u . into @u -- Prefer this: via @uwitchThis is the same as 5 except that it requires a type application for the source type. =-- Avoid this: tryCast (x :: s) -- Prefer this: tryFrom @s xwitchThis is the same as 5 except that it requires a type application for the target type. -- Avoid this: tryCast x :: Either (TryCastException s t) t -- Prefer this: tryInto @t xwitchThis is similar to  except that it works with  instances instead. This function is especially convenient because juggling the types in the  can be tedious. -- Avoid this: case tryInto @u x of Left _ -> Left ... Right y -> case tryFrom @u y of Left _ -> Left ... Right z -> ... -- Prefer this: tryVia @uwitch'This function can be used to implement  with a function that returns . For example: -- Avoid this: tryCast s = case f s of Nothing -> Left $ TryCastException s Nothing Just t -> Right t -- Prefer this: tryCast = maybeTryCast fwitch'This function can be used to implement  with a function that returns . For example: -- Avoid this: tryCast s = case f s of Left e -> Left . TryCastException s . Just $ toException e Right t -> Right t -- Prefer this: tryCast = eitherTryCast fwitchThis function is like  except that it will throw an impure exception if the conversion fails. -- Avoid this: either throw id . cast -- Prefer this: unsafeCastwitchThis function is like  except that it will throw an impure exception if the conversion fails. -- Avoid this: either throw id . from @s -- Prefer this: unsafeFrom @s witchThis function is like  except that it will throw an impure exception if the conversion fails. -- Avoid this: either throw id . into @t -- Prefer this: unsafeInto @t   None !witch This is like ; except that it works at compile time rather than runtime. -- Avoid this: unsafeCast "some literal" -- Prefer this: $$(liftedCast "some literal")"witch This is like ; except that it works at compile time rather than runtime. -- Avoid this: unsafeFrom @s "some literal" -- Prefer this: $$(liftedFrom @s "some literal")#witch This is like  ; except that it works at compile time rather than runtime. -- Avoid this: unsafeInto @t "some literal" -- Prefer this: $$(liftedInto @t "some literal")!"#!"#None>B]%witchThe maximum integral value that can be unambiguously represented as a . Equal to 16,777,215.&witchThe maximum integral value that can be unambiguously represented as a !. Equal to 9,007,199,254,740,991.'witch Converts via .(witch Converts via .)witchUses .*witchUses coerce.+witchUses .,witchUses .-witchUses ..witchUses . Some " values cannot be represented in  and will be replaced with '\xFFFD'./witchUses .0witchUses .1witchUses .2witchUses . Some ! values cannot be represented in  and will be replaced with '\xFFFD'.3witchUses .4witchUses .5witchUses .6witchUses .7witchUses .8witchUses .9witchUses .:witchUses .;witchUses .<witchUses .=witchUses .>witchUses .?witchUses .@witchUses .AwitchUses .BwitchUses . If there are duplicate keys, later values will overwrite earlier ones.CwitchUses .DwitchUses . If there are duplicate keys, later values will overwrite earlier ones.EwitchUses .FwitchUses .GwitchUses .HwitchUses .IwitchUses .JwitchUses .KwitchUses  when the imaginary part is 0.LwitchUses  with an imaginary part of 0.MwitchUses  . This means cast (3.00 :: Centi) is 300 rather than 3.NwitchUses  . This means cast 2 :: Centi is 0.02 rather than 2.00.OwitchUses (. This necessarily loses some precision.PwitchUses (. This necessarily loses some precision.QwitchUses  when the denominator is 1.RwitchUses  with a denominator of 1.SwitchUses (. This necessarily loses some precision.TwitchUses ' when the input is not NaN or infinity.Uwitch Converts via .Vwitch Converts via .Wwitch Converts via .Xwitch Converts via .Ywitch Converts via .Zwitch Converts via .[witch Converts via  when the input is between -9,007,199,254,740,991 and 9,007,199,254,740,991 inclusive.\witch Converts via .]witch Converts via .^witch Converts via ._witch Converts via .`witch Converts via .awitchUses .bwitchUses ' when the input is not NaN or infinity.cwitch Converts via .dwitch Converts via .ewitch Converts via .fwitch Converts via .gwitch Converts via .hwitch Converts via .iwitch Converts via  when the input is between -16,777,215 and 16,777,215 inclusive.jwitch Converts via .kwitch Converts via .lwitch Converts via .mwitch Converts via .nwitch Converts via .owitchUses  when the input is less than or equal to 9,007,199,254,740,991.pwitchUses 4 when the input is less than or equal to 16,777,215.qwitchUses .rwitchUses .switchUses .twitchUses .uwitchUses .vwitchUses .wwitchUses .xwitchUses .ywitchUses .zwitchUses .{witchUses .|witchUses  when the input is less than or equal to 9,007,199,254,740,991.}witchUses 4 when the input is less than or equal to 16,777,215.~witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is less than or equal to 9,007,199,254,740,991.witchUses 4 when the input is less than or equal to 16,777,215.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses 4 when the input is less than or equal to 16,777,215.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is between -9,007,199,254,740,991 and 9,007,199,254,740,991 inclusive.witchUses  when the input is between -16,777,215 and 16,777,215 inclusive.witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is between -9,007,199,254,740,991 and 9,007,199,254,740,991 inclusive.witchUses  when the input is between -16,777,215 and 16,777,215 inclusive.witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is between -9,007,199,254,740,991 and 9,007,199,254,740,991 inclusive.witchUses  when the input is between -16,777,215 and 16,777,215 inclusive.witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is between -16,777,215 and 16,777,215 inclusive.witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses  when the input is not negative.witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .witchUses .$%&$%& NoneB !"# !"#      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$witch-0.2.1.1-LZd7kntCOmh7E1Dt3NOVFL Witch.Cast Witch.CastingWitch.IdentityWitch.TryCastException Witch.TryCast Witch.Utility Witch.LiftWitch.InstancesWitchCastcastCasting $fShowCasting $fReadCasting $fOrdCasting $fEqCasting $fEnumCasting$fBoundedCasting$fCastCastings$fCastsCastingNeverIdentityTryCastException$fExceptionTryCastException$fShowTryCastExceptionTryCasttryCastasfromintooverviatryFromtryIntotryVia maybeTryCast eitherTryCast unsafeCast unsafeFrom unsafeInto liftedCast liftedFrom liftedIntofromNonNegativeIntegralmaxFloat maxDouble$fCastTryCastExceptionText$fCastTryCastExceptionText0$fCastTryCastException[]&$fCastTryCastExceptionTryCastException$fCastTextByteString$fCastTextText $fCastText[] $fCast[]Text$fCastTextByteString0$fCastTextText0 $fCastText[]0 $fCast[]Text0$fCastShortByteStringByteString$fCastShortByteString[]$fCast[]ShortByteString$fTryCastByteStringText$fCastByteStringByteString$fCastByteString[]$fCast[]ByteString$fTryCastByteStringText0$fCastByteStringShortByteString$fCastByteStringByteString0$fCastByteString[]0$fCast[]ByteString0 $fCastSeq[] $fCast[]Seq$fCastIntMap[]$fCast[]IntMap $fCastMap[] $fCast[]Map$fCastIntSet[]$fCast[]IntSet $fCastSet[] $fCast[]Set$fCastNonEmpty[]$fTryCast[]NonEmpty$fTryCastComplexa$fCastaComplex$fCastFixedInteger$fCastIntegerFixed$fCastRatioDouble$fCastRatioFloat$fTryCastRatioa $fCastaRatio$fCastDoubleFloat$fTryCastDoubleRatio$fTryCastDoubleNatural$fTryCastDoubleWord$fTryCastDoubleWord64$fTryCastDoubleWord32$fTryCastDoubleWord16$fTryCastDoubleWord8$fTryCastDoubleInteger$fTryCastDoubleInt$fTryCastDoubleInt64$fTryCastDoubleInt32$fTryCastDoubleInt16$fTryCastDoubleInt8$fCastFloatDouble$fTryCastFloatRatio$fTryCastFloatNatural$fTryCastFloatWord$fTryCastFloatWord64$fTryCastFloatWord32$fTryCastFloatWord16$fTryCastFloatWord8$fTryCastFloatInteger$fTryCastFloatInt$fTryCastFloatInt64$fTryCastFloatInt32$fTryCastFloatInt16$fTryCastFloatInt8$fTryCastNaturalDouble$fTryCastNaturalFloat$fCastNaturalInteger$fTryCastNaturalInt$fTryCastNaturalInt64$fTryCastNaturalInt32$fTryCastNaturalInt16$fTryCastNaturalInt8$fTryCastNaturalWord$fTryCastNaturalWord64$fTryCastNaturalWord32$fTryCastNaturalWord16$fTryCastNaturalWord8$fTryCastWordDouble$fTryCastWordFloat$fCastWordInteger$fTryCastWordInt$fTryCastWordInt64$fTryCastWordInt32$fTryCastWordInt16$fTryCastWordInt8$fCastWordNatural$fCastWordWord64$fTryCastWordWord32$fTryCastWordWord16$fTryCastWordWord8$fTryCastWord64Double$fTryCastWord64Float$fCastWord64Integer$fTryCastWord64Int$fTryCastWord64Int64$fTryCastWord64Int32$fTryCastWord64Int16$fTryCastWord64Int8$fCastWord64Natural$fTryCastWord64Word$fTryCastWord64Word32$fTryCastWord64Word16$fTryCastWord64Word8$fCastWord32Double$fTryCastWord32Float$fCastWord32Integer$fTryCastWord32Int$fCastWord32Int64$fTryCastWord32Int32$fTryCastWord32Int16$fTryCastWord32Int8$fCastWord32Natural$fTryCastWord32Word$fCastWord32Word64$fTryCastWord32Word16$fTryCastWord32Word8$fCastWord16Double$fCastWord16Float$fCastWord16Integer$fCastWord16Int$fCastWord16Int64$fCastWord16Int32$fTryCastWord16Int16$fTryCastWord16Int8$fCastWord16Natural$fCastWord16Word$fCastWord16Word64$fCastWord16Word32$fTryCastWord16Word8$fCastWord8Double$fCastWord8Float$fCastWord8Integer$fCastWord8Int$fCastWord8Int64$fCastWord8Int32$fCastWord8Int16$fTryCastWord8Int8$fCastWord8Natural$fCastWord8Word$fCastWord8Word64$fCastWord8Word32$fCastWord8Word16$fTryCastIntegerDouble$fTryCastIntegerFloat$fTryCastIntegerNatural$fTryCastIntegerWord$fTryCastIntegerWord64$fTryCastIntegerWord32$fTryCastIntegerWord16$fTryCastIntegerWord8$fTryCastIntegerInt$fTryCastIntegerInt64$fTryCastIntegerInt32$fTryCastIntegerInt16$fTryCastIntegerInt8$fTryCastIntDouble$fTryCastIntFloat$fTryCastIntNatural$fTryCastIntWord$fTryCastIntWord64$fTryCastIntWord32$fTryCastIntWord16$fTryCastIntWord8$fCastIntInteger$fCastIntInt64$fTryCastIntInt32$fTryCastIntInt16$fTryCastIntInt8$fTryCastInt64Double$fTryCastInt64Float$fTryCastInt64Natural$fTryCastInt64Word$fTryCastInt64Word64$fTryCastInt64Word32$fTryCastInt64Word16$fTryCastInt64Word8$fCastInt64Integer$fTryCastInt64Int$fTryCastInt64Int32$fTryCastInt64Int16$fTryCastInt64Int8$fCastInt32Double$fTryCastInt32Float$fTryCastInt32Natural$fTryCastInt32Word$fTryCastInt32Word64$fTryCastInt32Word32$fTryCastInt32Word16$fTryCastInt32Word8$fCastInt32Integer$fTryCastInt32Int$fCastInt32Int64$fTryCastInt32Int16$fTryCastInt32Int8$fCastInt16Double$fCastInt16Float$fTryCastInt16Natural$fTryCastInt16Word$fTryCastInt16Word64$fTryCastInt16Word32$fTryCastInt16Word16$fTryCastInt16Word8$fCastInt16Integer$fCastInt16Int$fCastInt16Int64$fCastInt16Int32$fTryCastInt16Int8$fCastInt8Double$fCastInt8Float$fTryCastInt8Natural$fTryCastInt8Word$fTryCastInt8Word64$fTryCastInt8Word32$fTryCastInt8Word16$fTryCastInt8Word8$fCastInt8Integer $fCastInt8Int$fCastInt8Int64$fCastInt8Int32$fCastInt8Int16ghc-primGHC.PrimcoercebaseGHC.ShowShowGHC.BaseStringGHC.ReadReadGHC.Exception.Type SomeExceptionid GHC.MaybeMaybe Data.EitherEither GHC.TypesFloatDoubleshow#text-1.2.4.1-GP7eNhmR25pL86hGhau2f1Data.Text.Lazy.Encoding encodeUtf8Data.Text.LazytoStrictunpackpackCharData.Text.Internal.LazyTextData.Text.Encoding fromStrictData.Text.Show Data.TextData.Text.Internal+bytestring-0.10.12.1-GAiXzE3dBr4BDIhRw30d1xData.ByteString.Short.Internal fromShort decodeUtf8'Data.ByteString.LazytoShortData.ByteString Data.FoldabletoListcontainers-0.6.2.1Data.Sequence.InternalfromListData.IntMap.Internal toAscListData.Map.InternalData.IntSet.InternalData.Set.InternalData.List.NonEmptynonEmpty Data.ComplexrealPart:+ Data.FixedMkFixedGHC.Real fromRational numerator% GHC.Float double2Float toRationalinteger-wired-inGHC.Integer.TypeIntegerRational float2Double fromIntegral Data.BitstoIntegralSizedGHC.Num fromInteger