h&%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq  Safe-Inferred'()/0145789:;<=>?2rstuvwxy Safe-Inferred&()/0145789:;<=>? strongweakObtain either the strong or weak representation of a type, depending on the type-level strength "switch" provided.6This is intended to be used in data types that take a 7 type. Define your type using strong fields wrapped in Switch s. You then get the weak representation for free, using the same definition. data A (s :: Strength) = A { aField1 :: Switch s Word8 , aField2 :: String }  strongweak1Obtain the weak representation of the given type. Safe-Inferred)!()/0145789:;<=>?  strongweakStrengthen error data type. Don't use these constructors directly, use the existing helper functions.Field indices are from 0 in the respective constructor. Field names are provided if present. strongweakAny w can be "strengthened" into an s by asserting some properties.%For example, you may strengthen some z n into a { by asserting  0 <= n <= 255.Note that we restrict strengthened types to having only one corresponding weak representation using functional dependencies.  strongweak  with reordered type variables for more convenient visible type application. strongweak? # strongweak.Get the record name for a selector if present.On the type level, a 'Maybe Symbol' is stored for record names. But the reification is done using  fromMaybe "". So we have to inspect the resulting string to determine whether the field uses record syntax or not. (Silly.)$ strongweak|? without the value (only used as a proxy). Lets us push our }s into one place.% strongweak~? without the value (only used as a proxy). Lets us push our }s into one place.& strongweak? without the value (only used as a proxy). Lets us push our }s into one place.' strongweak4Strengthen sum types by strengthening left or right.( strongweak"Nothing to do for empty datatypes.* strongweak9Strengthen product types by strengthening left and right.This is ordered (left then right), but only to pass the index along.+ strongweak&Strengthen a field using the existing  instance.On strengthen failure, the errors are annotated with all the datatype information we've hoarded. The upshot is that if you strengthen a type with lots of types inside it, all with generically-derived  instances, you'll get a precise zoom-in of exactly where each error occurred., strongweakSpecial case: if source and target types are equal, copy the value through.- strongweak%Nothing to do for empty constructors.  !"#$%& " !#$%& Safe-Inferred'()/0145789:;<=>?/ strongweakAny w( can be unsafely "strengthened" into an s8 by pretending that we've asserted some properties..For example, you may unsafely strengthen some z n into a {? by unsafely coercing the value, ignoring the possibility that n >= 255.Currently, this class is more of a thought experiment than something to use. That is to say, do not use this.2This typeclass should probably follow its big sis  Strengthen. Only provide /' instances for types that have similar  Strengthen instances.1 strongweak0 with reordered type variables for more convenient visible type application.: strongweak0Obtain a refined type by ignoring the predicate.; strongweakObtain a sized vector by unsafely assuming the size of a plain list. Extremely unsafe.< strongweak+Unsafely strengthen each element of a list./01/01 Safe-Inferred'()/0145789:;<=>?= strongweakAny s can be "weakened" into a w.For example, you may weaken a { into a z.Note that we restrict strengthened types to having only one corresponding weak representation using functional dependencies.G strongweak(Strip the refinement from refined types.H strongweak&Weaken sized vectors into plain lists.I strongweakWeaken each element of a list=>=> Safe-Inferred&()/0145789:;<=>?M strongweak,Weaken sum types by weakening left or right.N strongweak1Weaken product types by weakening left and right.O strongweak"Weaken a field using the existing = instance.P strongweakSpecial case: if source and target types are equal, copy the value through.Q strongweak%Nothing to do for empty constructors.R strongweak"Nothing to do for empty datatypes.S strongweakStrip all meta.JKLLJK  Safe-Inferred&()/0145789:;<=>?\"LL" Safe-Inferred&()/0145789:;<=>?T strongweak(Weaken and re-strengthen a strong value.In correct operation, restrengthen === Right. If your value was strengthened incorrectly, or perhaps you cheated via UnsafeStrengthen), this may not be the case. For example:8restrengthen $ unsafeStrengthen' @(Vector 2 Natural) [0] Failure ... =>TT Safe-Inferred&()/0145789:;<=>?p UVWX[ZY\_^]`a \_^]X[ZY`aWUV     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuvwxyz { | } ~    strongweak-0.2.0-inplace Strongweak.SWStrongweak.StrengthenStrongweak.Generic.StrengthenStrongweak.Strengthen.UnsafeStrongweak.WeakenStrongweak.Generic.Weaken StrongweakStrongweak.ExamplePaths_strongweakStrongweak.GenericSWWeakStrengthStrongStrengthenErrorStrengthenErrorBaseStrengthenErrorField Strengthen strengthen strengthen'strengthenErrorPrettystrengthenErrorBasestrengthenBounded$fPrettyStrengthenError$fShowStrengthenError$fStrengthenIntegerInt64$fStrengthenIntegerInt32$fStrengthenIntegerInt16$fStrengthenIntegerInt8$fStrengthenNaturalWord64$fStrengthenNaturalWord32$fStrengthenNaturalWord16$fStrengthenNaturalWord8$fStrengthenaRefined$fStrengthen[]Vector$fStrengthen[][]$fEqStrengthenError GStrengthenS gstrengthenS GStrengthenC gstrengthenC GStrengthenD gstrengthenDstrengthenGeneric selName''conName' datatypeName'selName'$fGStrengthenCk:+::+:$fGStrengthenCkV1V1$fGStrengthenDkM1M1$fGStrengthenSk:*::*:$fGStrengthenSkM1M1$fGStrengthenSkM1M10$fGStrengthenSkU1U1$fGStrengthenCkM1M1UnsafeStrengthenunsafeStrengthenunsafeStrengthen'$fUnsafeStrengthenIntegerInt64$fUnsafeStrengthenIntegerInt32$fUnsafeStrengthenIntegerInt16$fUnsafeStrengthenIntegerInt8$fUnsafeStrengthenNaturalWord64$fUnsafeStrengthenNaturalWord32$fUnsafeStrengthenNaturalWord16$fUnsafeStrengthenNaturalWord8$fUnsafeStrengthenaRefined$fUnsafeStrengthen[]Vector$fUnsafeStrengthen[][]Weakenweaken$fWeakenInt64Integer$fWeakenInt32Integer$fWeakenInt16Integer$fWeakenInt8Integer$fWeakenWord64Natural$fWeakenWord32Natural$fWeakenWord16Natural$fWeakenWord8Natural$fWeakenRefineda$fWeakenVector[] $fWeaken[][]GWeakengweaken weakenGeneric$fGWeakenk:+::+:$fGWeakenk:*::*:$fGWeakenkK1K1$fGWeakenkK1K10$fGWeakenkU1U1$fGWeakenkV1V1$fGWeakenkM1M1 restrengthenExUnitExVoidEx2DEx2Cex2f1ex2f2Ex1DEx1Cex1f1ex1f2ex1wex2w$fStrengthenEx1DEx1D$fWeakenEx1DEx1D$fStrengthenEx2DEx2D$fWeakenEx2DEx2D$fStrengthenExVoidExVoid$fWeakenExVoidExVoid$fStrengthenExUnitExUnit$fWeakenExUnitExUnit$fGenericExUnit$fGenericExVoid $fGenericEx2D $fGenericEx1D $fShowEx2D $fShowEx2D0 $fShowEx1D $fShowEx1D0versiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir ghc-bignumGHC.Num.NaturalNaturalbaseGHC.WordWord8 GHC.GenericsconNameGHC.Err undefined datatypeNameselName