#ϱ—      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe &'-.HUVtypelits-printfParse a numbertypelits-printfParse a single digittypelits-printfKA type synonym for a single-character symbol. Ideally this would just be >, but we don't have chars at the type level. So, if you see h in a type signature, it means that it's expected to be a symbol/string with only one single character.#Safe"#-.=?HUVX_k"  !"#(c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone&',-.8=?@ACHSUVX_gk~M$typelits-printfUtility type powering 8. See dcumentation for 8 for more information on usage.Using OverloadedLabels<, you never need to construct this directly can just write #f and a $ "f"5 will be generated. You can also create this using 7 or 6, in the situations where OverloadedLabels doesn't work or is not wanted.'typelits-printf A version of 7 taking an explicit proxy, which allows usage without TypeApplicationsLputStrLn $ printf_ (Proxy :: Proxy "You have %.2f dollars, %s") 3.62 "Luigi"You have 3.62 dollars, Luigi(typelits-printfCA useful token for helping the type system give useful errors for printf:2printf @"You have ".2f" dollars, %s" 3.26 :: PHelp9-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.wUsually things should work out on their own without needing this ... but sometimes the type system could need a nudge. See also **typelits-printfMA useful helper function for helping the type system give useful errors for printf:0pHelp $ printf @"You have %.2f dollars, %s" 3.629-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.vUsually things would work out on their own without needing this ... but sometimes the type system could need a nudge.+typelits-printf,The typeclass supporting polyarity used by &. It works in mostly the same way as  from  Text.Printf, and similar the same as .Ideally, you will never have to run into this typeclass or have to deal with it. It will come up if you ask for the type of H, or sometimes if you give the wrong number or type of arguments to it.&:t printf @"You have %.2f dollars, %s"AFormatFun '[ Right ..., 'Left " dollars ", 'Right ...] fun => fun$Every item in the first argument of +C is a chunk of the formatting string, split between format holes () and string chunks (`). You can successively "eliminate" them by providing more arguments that implement each hole:+:t printf @"You have %.2f dollars, %s" 3.62"FormatFun '[ Right ...] fun => fun)Until you you finally fill all the holes:3:t printf @"You have %.2f dollars, %s" 3.62 "Luigi"FormatFun '[] t => t#at which point you may use it as a  or  (), in the same way that  Text.Printf& works. We also support using strict  lazy  as well.dSo, while it's possible to reason with this using the types, it's usually more difficult than with pprintf and rprintf.uThis is why, instead of reasoning with this using its types, it's easier to reason with it using the errors instead:#printf @"You have %.2f dollars, %s";-- ERROR: Call to printf missing argument fulfilling "%.2f"H-- Either provide an argument or rewrite the format string to not expect-- one.(printf @"You have %.2f dollars, %s" 3.629-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.0printf @"You have %.2f dollars, %s" 3.62 "Luigi"You have 3.62 dollars, Luigi3printf @"You have %.2f dollars, %s" 3.62 "Luigi" 72I-- ERROR: An extra argument of type Integer was given to a call to printfJ-- Either remove the argument, or rewrite the format string to include the-- appropriate hole.ZIf you're having problems getting the error messages to give helpful feedback, try using *:0pHelp $ printf @"You have %.2f dollars, %s" 3.629-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.*E can give the type system the nudge it needs to provide good errors..typelits-printf A version of 7 taking an explicit proxy, which allows usage without TypeApplications8:t rprintf_ (Proxy :: Proxy "You have %.2f dollars, %s") FormatArgs '["f", "s"] -> String1typelits-printfA heterogeneous list (from Data.Vinyl.Core) used for calling with x. Instead of supplying the inputs as different arguments, we can gather all the inputs into a single list to give to .':t rprintf @"You have %.2f dollars, %s" FormatArgs '["f", "s"] -> StringTo construct a 1 '["f", "s"]+, you need to give a value formattable by f and a value formattable by s", given like a linked list, with   for cons and  for nil.IputStrLn $ rprintf @"You have %.2f dollars, %s" (3.62 :% "Luigi" :% RNil)You have 3.62 dollars, Luigi"(This should evoke the idea of of 3.62 : Luigi : []5, even though the latter is not possible in Haskell)2typelits-printf"Required wrapper around inputs to  / (guarded polyarity). See documentation for   for examples of usage.You can "wrap" any value in 2> as long as it can be formatted as the format type indicated.For example, to make a 2 "f", you can use 2 3.5 or 2 94.2 , but not 2 (3 :: Int) or 2 "hello". To make a value of type 2 c2, you must wrap a value that can be formatted via c.4typelits-printf$Typeclass associating format types (d, f6, etc.) with the types that can be formatted by them.ZYou can extend the printf methods here for your own types by writing your instances here.6typelits-printf A version of 7$ that takes an explicit proxy input..pfmt (mkPFmt_ (Proxy :: Proxy ".2f") 3.6234124"3.62"7typelits-printfUseful for using 8 without OverloadedLabelsN, or also when passing format specifiers that aren't currently allowed with OverloadedLabels until GHC 8.10+ (like #.2f).pfmt (mkPFmt @".2f") 3.6234124"3.62"8typelits-printfParse and run a single| format hole on a single vale. Can be useful for formatting individual items or for testing your own custom instances of 4.Usually meant to be used with OverloadedLabels: pfmt #f 3.62"3.62"nHowever, current versions of GHC disallow labels that aren't valid identifier names, disallowing things like 8 #.2f 3.62. While there is an < khttps://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0170-unrestricted-overloadedlabels.rsto approved proposal> that allows this, if you are using an earlier GHC version, you can get around this using 7:pfmt (mkPFmt @".2f") 3.6234124"3.62"%Ideally we'd want to be able to writepfmt #.2f 3.6234124"3.62"'(which should be possible in GHC 8.10+)9Note that the format string does not include the leading %.9typelits-printf Treats as s:typelits-printf Treats as s;typelits-printf Treats as s<typelits-printf Treats as g=typelits-printf Treats as g>typelits-printf Treats as u?typelits-printf Treats as u@typelits-printf Treats as uAtypelits-printf Treats as uBtypelits-printf Treats as uCtypelits-printf Treats as uDtypelits-printf Treats as dEtypelits-printf Treats as dFtypelits-printf Treats as dGtypelits-printf Treats as dHtypelits-printf Treats as dItypelits-printf Treats as dJtypelits-printf Treats as c7  !"#$%&'()*+,-./0123456787  !"# 4523-.1/0&'+,$%876()*(c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone&',-.8=?@ACHSUVX_gktypelits-printf4Pattern and constructor allowing you to construct a 1.To construct a 1 '["f", "s"]9, for instance, you need to give a value formattable by f and a value formattable by s", given like a linked list, with  for cons and  for nil. 3.62  Luigi :%  "(This should evoke the idea of of 3.62 : Luigi : []5, even though the latter is not possible in Haskell)typelits-printfNType-safe printf with faked polyarity. Pass in a "list" of arguments (using  and 4), instead of as multiple arguments. Call it like  @"you have %.02f dollars, %s".':t rprintf @"You have %.2f dollars, %s" FormatArgs '["f", "s"] -> StringCThis means that it is expecting something that can be printed with f) and something that can be printed with s. We can provide a  and a :MputStrLn $ rprintf @"You have %.2f dollars, %s" (3.62 ':%' "Luigi" :% 'RNil')You have 3.62 dollars, LuigiSee c for a version with true polyarity and good clear types, but requires wrapping its arguments, and e for a version with true polyarity but less clear types. Also see top-level module documentation GHC.TypeLits.Printf" for a more comprehensive summary.typelits-printf A version of 7 taking an explicit proxy, which allows usage without TypeApplications8:t pprintf_ (Proxy :: Proxy "You have %.2f dollars, %s")PP "f" -> PP "s" -> Stringtypelits-printf<Type-safe printf with true guarded polyarity. Call it like  @"you have %.02f dollars, %s".(A call to printf on a valid string will always4 give a well-defined type for a function in return:':t pprintf @"You have %.2f dollars, %s"PP "f" -> PP "s" -> StringYou can always query the type, and get a well-defined type back, which you can utilize using typed holes or other type-guided development techniques.To give 1 its arguments, however, they must be wrapped in 2:FputStrLn $ pprintf @"You have %.2f dollars, %s" (PP 3.62) (PP "Luigi")You have 3.62 dollars, LuigiSee / for a polyariadic method that doesn't require 2= on its inputs, but with a less helpful type signature, and 5 for a fake-polyariadic method that doesn't require 2^, but requires arguments in a single list instead. Also see top-level module documentation GHC.TypeLits.Printf" for a more comprehensive summary.typelits-printf:Type-safe printf with true naked polyarity. Call it like  @"you have %.02f dollars, %s".;putStrLn $ printf @"You have %.2f dollars, %s" 3.62 "Luigi"You have 3.62 dollars, LuigiWhile the type of  @"my fmt string"Y isn't going to be very helpful, the error messages should help guide you along the way:#printf @"You have %.2f dollars, %s";-- ERROR: Call to printf missing argument fulfilling "%.2f"H-- Either provide an argument or rewrite the format string to not expect-- one.(printf @"You have %.2f dollars, %s" 3.629-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.0printf @"You have %.2f dollars, %s" 3.62 "Luigi"You have 3.62 dollars, Luigi3printf @"You have %.2f dollars, %s" 3.62 "Luigi" 72I-- ERROR: An extra argument of type Integer was given to a call to printfJ-- Either remove the argument, or rewrite the format string to include the-- appropriate hole.ZIf you're having problems getting the error messages to give helpful feedback, try using *:0pHelp $ printf @"You have %.2f dollars, %s" 3.629-- ERROR: Call to printf missing argument fulfilling "%s"H-- Either provide an argument or rewrite the format string to not expect-- one.*E can give the type system the nudge it needs to provide good errors.See _ for a version of this with nicer types and type errors, but requires wrapping arguments, and y for a version of this with "fake" polyarity, taking a list as input instead. Also see top-level module documentation GHC.TypeLits.Printf# for a more comprehensive summary.fNote that this also supports the "interpret as an IO action to print out results" functionality that  Text.Printf1 supports. This also supports returning strict    and lazy    as well.$'(*+.1234567845'(*+23.18$767 !"#$%&'()*+,-./0112345567889:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    typelits-printf-0.1.1.0-inplaceGHC.TypeLits.Printf.InternalGHC.TypeLits.Printf#GHC.TypeLits.Printf.Internal.ParserGHC.TypeLits.Printf.ParseprintfData.Symbol.Examples.PrintfFormatFrprintf:%pprintf Data.TextTextData.Text.Lazybase Text.PrintfZeroPad LeftAdjustFormatAdjustment SignSpaceSignPlus FormatSignMvinyl-0.12.1-c8eda09e87cf20db9f3f727d5c47467d6c0818ed317e0588b1f9f9f589c79a67Data.Vinyl.CoreRNilRecSChar ParseFmt_ParseFmt ParseFmtStr_ ParseFmtStr EmptyFlags ShowFormatReflectreflectDemote FieldFormatFFfmtFlagsfmtWidth fmtPrecision fmtWidthModfmtCharWidthModWMhhWMhWMlWMllWMLFlagsfAdjustfSign fAlternatePFmtPrintfprintf_PHelppHelp FormatFun formatFunRPrintfrprintf_RFormatrformat FormatArgsPP FormatType formatArgmkPFmt_mkPFmtpfmt$fFormatType"v"Text$fFormatType"v"Text0$fFormatType"v"[]$fFormatType"v"Float$fFormatType"v"Double$fFormatType"v"Word64$fFormatType"v"Word32$fFormatType"v"Word16$fFormatType"v"Word8$fFormatType"v"Word$fFormatType"v"Natural$fFormatType"v"Integer$fFormatType"v"Int64$fFormatType"v"Int32$fFormatType"v"Int16$fFormatType"v"Int8$fFormatType"v"Int$fFormatType"v"Char$fFormatType"s"Text$fFormatType"s"Text0$fFormatType"s"[]$fFormatType"E"Float$fFormatType"E"Double$fFormatType"e"Float$fFormatType"e"Double$fFormatType"G"Float$fFormatType"G"Double$fFormatType"g"Float$fFormatType"g"Double$fFormatType"F"Float$fFormatType"F"Double$fFormatType"f"Float$fFormatType"f"Double$fFormatType"u"Word64$fFormatType"u"Word32$fFormatType"u"Word16$fFormatType"u"Word8$fFormatType"u"Word$fFormatType"u"Natural$fFormatType"u"Integer$fFormatType"u"Int64$fFormatType"u"Int32$fFormatType"u"Int16$fFormatType"u"Int8$fFormatType"u"Int$fFormatType"u"Char$fFormatType"b"Word64$fFormatType"b"Word32$fFormatType"b"Word16$fFormatType"b"Word8$fFormatType"b"Word$fFormatType"b"Natural$fFormatType"b"Integer$fFormatType"b"Int64$fFormatType"b"Int32$fFormatType"b"Int16$fFormatType"b"Int8$fFormatType"b"Int$fFormatType"b"Char$fFormatType"X"Word64$fFormatType"X"Word32$fFormatType"X"Word16$fFormatType"X"Word8$fFormatType"X"Word$fFormatType"X"Natural$fFormatType"X"Integer$fFormatType"X"Int64$fFormatType"X"Int32$fFormatType"X"Int16$fFormatType"X"Int8$fFormatType"X"Int$fFormatType"X"Char$fFormatType"x"Word64$fFormatType"x"Word32$fFormatType"x"Word16$fFormatType"x"Word8$fFormatType"x"Word$fFormatType"x"Natural$fFormatType"x"Integer$fFormatType"x"Int64$fFormatType"x"Int32$fFormatType"x"Int16$fFormatType"x"Int8$fFormatType"x"Int$fFormatType"o"Word64$fFormatType"o"Word32$fFormatType"o"Word16$fFormatType"o"Word8$fFormatType"o"Word$fFormatType"o"Natural$fFormatType"o"Integer$fFormatType"o"Int64$fFormatType"o"Int32$fFormatType"o"Int16$fFormatType"o"Int8$fFormatType"o"Int$fFormatType"o"Char$fFormatType"d"Word64$fFormatType"d"Word32$fFormatType"d"Word16$fFormatType"d"Word8$fFormatType"d"Word$fFormatType"d"Natural$fFormatType"d"Integer$fFormatType"d"Int64$fFormatType"d"Int32$fFormatType"d"Int16$fFormatType"d"Int8$fFormatType"d"Int$fFormatType"d"Char$fFormatType"c"Word16$fFormatType"c"Word8$fFormatType"c"Char $fRFormat:: $fRFormat:ps $fRFormat[][]$fRPrintfstrps$fFormatFun:->$fFormatFun:fun$fFormatFun[]->$fFormatFun[]()$fFormatFun[]IO$fFormatFun[]Text$fFormatFun[]Text0$fFormatFun[][]$fFormatFun[]PHelp$fFormatFun:IO$fFormatFun:PHelp$fFormatFun:Text$fFormatFun:Text0$fFormatFun:()$fFormatFun:[]$fPrintfstrfun$fIsLabelstrPFmtpprintf_NumberDigitghc-prim GHC.TypesCharIsAlphaCatChars FromDigits CharDigit EvalParser_ EvalHelp_ EvalParserEvalHelpCatHelpCat NumberHelpSomeManyApHelp<*> MapConHelp<$> DigitHelpSeqHelp*>Optional ChoiceMaybe<|>RepHelp<$AlphaAnySymNotSymSymPure RunParserParser PrintfType Data.EitherRightLeftGHC.BaseStringIO text-1.2.4.0Data.Text.InternalData.Text.Internal.LazyDouble