úÎ!3³/ó<      !"#$%&'()*+,-./0123456789:;Safe¿ overloaded Class for <-like datastructuresA character literal x is desugared to  'x' Safe Z overloaded Class for =-like datastrucutresAn if- -expression if b then t else e is desugared to ifte ( b) t e  Enabled with: ?{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:If #-}  overloaded overloaded if -expression. overloaded> is ? overloaded@ is ?None&'.=?@ACHUVX u  overloadedClass for Cons :.  overloadedClass for nil, []0See test-suite for ways to define instances for  . There are at-least two-ways.  Safe3 overloaded Class for A-like datastructuresA numeric literal 42 is desugared to  42 None&'.=?@AHUVXk overloaded Another way to desugar numerals.A numeric literal 123 is desugared to  @123  Enabled with: E{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:Numerals #-} -One can do type-level computations with this. overloadedDefault implementation of .Usage example:  instance (B n, ...) =>  n MyType where  =  @n  overloaded'TODO: currently there is no range checkNone"#*ìC overloadedModule name and variable name( overloaded Overloaded plugin.8To enable plugin put the following at top of the module: D{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:Symbols #-} KAt least one option is required, multiple can given either using multiple  -fplugin-opt/ options, or by separating options with colon: M{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:Symbols:Numerals #-} 8Options also take optional desugaring names, for example e{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:Labels=Data.Generics.ProductFields.field #-}  to desugar OverloadedLabels directly into field from  generics-lens% (no need to import orphan instance!)Supported optionsSymbols desugars literal strings to   @symStrings works like built-in OverloadedStrings( (but you can use different method than  )Numerals desugars literal numbers to   @natNaturals desugars literal numbers to  nat (i.e. like  )Chars desugars literal characters to  c. Note:7 there isn't type-level alternative: we cannot promote <s.Lists is not like built-in OverloadedLists!, but desugars explicit lists to  and If desugars if-expressions to  b t eLabels works like built-in OverloadedLabels (you should enable OverloadedLabels! so parser recognises the syntax)Known limitationsDoesn't desugar inside patterns((None&'.=?@AHUVX/!5 overloadedCAnother way to desugar overloaded string literals using this class.A string literal  "example" is desugared to 6 @"example"  Enabled with: D{-# OPTIONS -fplugin=Overloaded -fplugin-opt=Overloaded:Symbols #-} 5656None/g (56(56 D !"#$%&'()* +,-./0123456789:;<=>?@ABCD EFGHIJKLJKMNOPJKQNRSNTUNVWXY%overloaded-0.1-FOn4b0NDU5M7A7ii5FP2qGOverloaded.Chars Overloaded.IfOverloaded.ListsOverloaded.NaturalsOverloaded.NumeralsOverloaded.PluginOverloaded.SymbolsData.MapMap fromSymbol Data.String fromString fromNumeral fromNatural fromCharsconsnilifte OverloadedFromCharfromChar$fFromCharCharToBooltoBool$fToBoolEither $fToBoolMaybe $fToBoolBoolConsNil$fNilPOP$fNilNP$fNilVec$fNil[]$fConsNPPOPPOP $fConsfNPNP $fConsaVecVec$fConsa[]NonEmpty $fConsa[][] FromNatural$fFromNaturalInteger$fFromNaturalNatural FromNumeraldefaultFromNumeral$fFromNumeralnNat$fFromNumeralnInt$fFromNumeralnInteger$fFromNumeralnNatural$fFromNumeralnWord64$fFromNumeralnWord32$fFromNumeralnWord16$fFromNumeralnWord8$fFromNumeralnFin$fFinFromNumeralSS$fFinFromNumeralZSplugin $fEqOnOff $fShowOnOff $fEqVarName $fShowVarName $fEqNumNat $fShowNumNat $fEqStrSym $fShowStrSym$fEqV2$fShowV2 $fEqOptions $fShowOptions FromSymbol$fFromSymbolsText$fFromSymbolsText0$fFromSymbols[]$fFromSymbolsByteString$fFromSymbolsByteString0ghc-prim GHC.TypesCharBoolbase Data.EitherRightTrue GHC.MaybeJust GHC.NaturalNatural GHC.TypeNatsKnownNatVarName