h$+      !"#$%&'()*None 9>+witchThis type class represents a way to convert values from some type into another type. The constraint Cast a b2 means that you can convert from a value of type a into a value of type b. Cast a c where cast = via @b.)witchThis method implements the conversion of a value between types. In practice most instances don't need an explicit implementation. At call sites you'll usually want to use  or  instead of .The default implementation of  simply calls ,, which works for types that have the same runtime representation.witchThis function converts a value from one type into another. This is intended to be used with the TypeApplications language extension. The  Ambiguous type in the signature makes a type application required. If you'd prefer not to provide a type application, use  instead.6As an example, here are a few ways to convert from an - into an .: from @Int @Integer 123 from @_ @Integer (123 :: Int) from @Int @_ 123 :: Integer from @Int 123 :: IntegerOften the context around an expression will make the explicit type signatures unnecessary. If you find yourself using a partial type signature, consider using  instead. For example: let someInt = 123 :: Int from @_ @Integer someInt -- avoid this into @Integer someInt -- prefer thiswitchThis function converts a value from one type into another. This is the same as : except that the type variables are in the opposite order.witchThis function converts a value from one type into another by going through some third type. This is the same as calling  (or  or /) twice, but can sometimes be more convenient.Note that the type in the middle of the conversion is the first type variable of this function. In other words,  via @b @a @c first converts from a to b, and then from b to c . Often both a and c will be inferred from context, which means you can just write via @b.witch/witch0Note that if there are duplicate keys in the list, the one closest to the end will win.witch1witch2witch>witch?witch@witch@witch@witch@witch@witch@witch@witch@witch@witch@ witchA!witchB"witchC#witchD$witchE%witchF&witchG'witchH(witchI)witchJ*witch+      !"#$%&'()*+,-./01203456789:89;8<:8<;-=>8?;@AB@AC@DE@FG03HIJBIJCIKEIKG-LM-NO-NP-Q>-RS-RT-RU-VW-XY-XZ-[\-.]-.^$witch-0.0.0.5-G9wZzaCyzKDH0y1ALVlyHKWitchCastcastfromintovia $fCastMap[] $fCast[]Map $fCastSet[] $fCast[]Set $fCastSeq[] $fCast[]Seq$fCastTextText$fCastTextText0 $fCastText[] $fCast[]Text$fCastByteStringByteString$fCastByteStringByteString0$fCastByteString[]$fCast[]ByteString $fCastCharInt $fCastBoolInt$fCastFloatDouble$fCastIntegerRatio$fCastIntInteger$fCastInt32Int64$fCastInt16Int32$fCastInt8Int16$fCastNaturalInteger$fCastWordNatural$fCastWord32Word64$fCastWord16Word32$fCastWord8Word16$fCastNonEmpty[] $fCast(,)(,) $fCast(,)a $fCast(,)a0 $fCastVoidx $fCastaEither$fCastaEither0 $fCastaMaybe $fCasta[] $fCasta->$fCastaabaseGHC.Baseidghc-primGHC.Primcoerce GHC.TypesIntinteger-wired-inGHC.Integer.TypeIntegercontainers-0.6.2.1Data.Map.Internal toAscListfromListData.Set.Internal Data.FoldabletoListData.Sequence.Internal#text-1.2.4.1-9XjLg7jyO9JFRb8fG3DntTData.Text.LazytoStrict fromStrictData.Text.Showunpack Data.TextpackCharbytestring-0.10.10.0Data.ByteString.LazyData.ByteStringGHC.EnumfromEnumGHC.Real realToFrac fromIntegralData.List.NonEmpty Data.Tupleswapsndfst Data.Voidabsurd Data.EitherRightLeft GHC.MaybeJustpureconst