h&%6"5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd e f g h i j k l m n o p q r s t u v w x y z { | } ~           Internal Safe-Inferred!"$%&'(),./01245789:;<=>?6exonMonoidally combine all elements in the list, appending the separator between each pair of elements. Data Type  , Internal Safe-Inferred!"$%&'(),./01245789:;<=>?exon0An intermediate representation for internal use.Internal Safe-Inferred!"$%&'(),./01245789:;<=>?exon/The combined segments, either empty or a value.   Data Type  Safe-Inferred!"$%&'(),./01245789:;<=>?exonThe parts of an interpolation quasiquote. Text is split at each whitespace and interpolation splice marked by #{ and }.Internal Safe-Inferred!"$%&'(),./01245789:;<=>?   Internal Safe-Inferred!"$%&'(),./01245789:;<=>? $exonThis class determines how an expression is converted to an interpolation quote's result type.For a quote like [exon|a #{exp :: T} c|] :: R, the instance  ToSegment T R is used to turn T into R. Aside from specialized instances for stringly types, the default implementation uses  to unwrap newtypes that either match the result type exactly, or uses ! for result types that implement . So given:-newtype T = T Text deriving newtype (Generic)newtype R = R Text deriving newtype (IsString, Semigroup, Monoid)0the quote from earlier would generically unwrap T and use  to construct an R.$%&'()()'&$%Internal Safe-Inferred!"$%&'(),./01245789:;<=>? 2exonInternal auxiliary class that applies a function to the value inside of a nested chain of  newtypes.(The method only passes its arguments to 31, but the class hides the intermediate parameter.4exonInternal auxiliary class that applies a function to the value inside of a nested chain of  newtypes.23454523Internal Safe-Inferred!"$%&'(),./01245789:;<=>?~9exon,This class is the main entry point for Exon.3The default instance unwraps all newtypes that are " and passes the innermost type to ;.1The original type is also used as a parameter to ;', so customizations can be based on it.:exonConcatenate a list of s.;exonThis class implements the  concatenation logic. Each % is converted to the builder type by D.Each  and % is converted to the builder type by ? and A.The segments are folded over =.The result is converted from the builder type to the original type by D.(Each step may be overridden individually<exonConcatenate a list of s.=exonThis class handles concatenation of segments, which might be a builder or the result type.!The default instance simply uses -, and there is only one special instance for  -> , the type used by  .>exon-Concatenate two segments of the builder type.?exonThis class converts a  to a builder.The default implementation performs the following conversions for the differnet segment variants: 'Segment.String'Segment.String and  'Segment.Whitespace'Segment.Whitespace are plain s parsed literally from the quasiquote. They are converted to the builder type by  (handled by A). 'Segment.Whitespace'Segment.Whitespace is ignored when the quoter   was used. 'Segment.Expression'Segment.Expression? contains a value of the builder type, which is returned as-is.@exon3Convert literal string segments to the result type.AexonThis class generalizes  for use in ?.When a plain text segment (not interpolated) is processed, it is converted to the result type, which usually happens via .For the type of   ( -> ), there is no instance of , so this class provides an instance that works around that by calling .Bexon Convert a  to the builder type.Cexon Convert a  containing whitespace to the builder type. This is only used by whitespace-aware quoters, like   or  .Dexon-This class converts a segment into a builder.A builder is an auxiliary data type that may improve performance when concatenating segments, like >. The default instance uses no builder and is implemented as .Eexon;Construct a builder from the newtype-unwrapped result type.FexonConvert the result of the builder concatenation back to the newtype-unwrapped result type.Gexon'Wrapping a quote type with this causes a to be used irrespective of whether it is an unwrappable newtype.JexonWrapping a quote type with this causes whitespace to be ignored.Lexon5Defined separately because TH chokes on the selector.Mexon Wrapper for > that handles the   case.NexonCall :, but unwrap the arguments and rewrap the result using the supplied functions.Uexon5The instance used when the result type is wrapped in J, which is done by  . It returns   for any whitespace.Vexon"The instance for the type used by  .9:;<=>?@ACBDFEGHIJKLMNJKLGHIDFEACB?@=>M;<9:N *The parser for the quasiquote body, using  FlatParse. Safe-Inferred!"$%&'(),./01245789:;<=>?kdefghijklmnopqrstuvwdefghijklmnopqrstuvw Internal Safe-Inferred!"$%&'(),./01245789:;<=>?!0exonConstructor for a quasiquoter that wraps all segments with the first expression and unwraps the result with the second.This can be used to define quoters with custom logic by providing instances of any of the classes in Exon.Class.Exon7 with the result type argument set to the wrapper type:(import Exon.Class.Exon (ExonString (..))*import Exon.Data.Segment (Segment(String))/import qualified Data.Text.Lazy.Builder as Text'newtype Nl = Nl Text deriving (Generic)getNl (Nl t) = tinstance ExonString Nl Text.Builder where exonWhitespace _ = exonString @Nl "\n"9exonnl = exonWith (Just ([e|Nl|], [e|getNl|])) True False[exonnl|one two three|]"one\ntwo\nthree"exonA quasiquoter that allows interpolation, concatenating the resulting segments with : or a an arbitrary user-defined implementation. See the Exon introduction for details.[exon|write #{show (5 :: Int)} lines of ##{"code" :: ByteString}|] :: Text"write 5 lines of code"exonUnsafe version of , allowing automatic conversion with the same splice brackets as matching types.exon A variant of  that ignores all literal whitespace in the quote (not in interpolated expressions). "[intron|x|] === skipWs [exonws|x|]exon A variant of  that creates segments for each sequence of whitespace characters that can be processed differently by  ,   or  .exon9Internal debugging quoter that produces the raw segments.xyz{|}~z{xy|}~  Safe-Inferred!"$%&'(),./01245789:;<=>?!# $%9:;<=>?@ABCDEFGHIJKL#9:;<=>?@DEFABC$%JKLGHI  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ KLMNOPQRSTUUVWWXYZ[\]^_`abcdefghijklmno p q r s t u v w x y z { | } ~                      ##exon-1.0.0.0-HHAa0zZx0UkBLxlvKm6zLiExon.CombinatorsExon.Data.RawSegmentExon.Data.ResultExon.Data.Segment Exon.GenericExon.Class.ToSegmentExon.Class.NewtypeExon.Class.Exon Exon.Parse Exon.Quote Text.Show showsPrecExonintronexonws ExonAppend ExonSegment ExonString intercalate RawSegment WsSegment StringSegment ExpSegmentAutoExpSegment$fEqRawSegment$fShowRawSegmentResultEmpty$fMonoidResult$fSemigroupResult $fEqResult $fShowResult$fFoldableResultSegmentString Whitespace Expression$fIsStringSegment $fEqSegment $fShowSegment$fFunctorSegment IsNewtypeGDatatypeInfoIsNewtypeOverNtGenNtReifyNt ConstructSOPReifySOPunwrapwrap'$fGDatatypeInfoIsNewtype:Newtypewrapped&$fGDatatypeInfoIsNewtypedssinfowrapped$fIsNewtypeTYPEdwrapped ToSegment toSegmentNoGenericMessageQNewtypeSegmentnewtypeSegment$fNewtypeSegmentNothingab$fToSegmentByteStringa$fToSegmentByteStringa0$fToSegmentTexta$fToSegmentTexta0$fToSegment[]a $fToSegmentab$fNewtypeSegmentJustac OverNewtypes overNewtypes OverNewtype overNewtype"$fOverNewtypecurrentNothingcurrent$fOverNewtypecurrentJustinner$fOverNewtypesresultinner exonProcess ExonBuild exonBuild exonAppend exonSegment exonStringexonWhitespace ExonBuilder exonBuilderexonBuilderExtractExonUse$sel:exonUse:ExonUseSkipWsskipWsexonAppendResultexonProcessWith$fExonBuilderByteStringBuilder$fExonBuilderByteStringBuilder0$fExonBuilderTextBuilder$fExonBuilderTextBuilder0$fExonBuilderExonUsebuilder$fExonBuilderresultbuilder$fExonStringSkipWsbuilder$fExonStringresultFUN$fExonStringresulta$fExonSegmentresultbuilder$fExonAppendresultFUN$fExonAppendresultbuilder$fExonBuildresultinner $fExonresult $fEqExonUse $fShowExonUse$fIsStringExonUse $fEqSkipWs $fShowSkipWs$fGenericSkipWs$fIsStringSkipWsParserspanws whitespacebefore finishBeforeexprautoInterpolationverbatimInterpolation untilTokenEnduntilTokenEndWstexttextWssegment segmentWsparserparserWs parseWithparseparseWsQOrIOfileExtensions exonError segmentsQreifyExp reifySegments quoteExpWithquoteExp quoteSegmentsexonWithexonexun exonSegments$fQOrIOQ $fQOrIOIObase GHC.GenericsGeneric Data.String fromStringIsStringGHC.Base<>GHC.Show showString text-1.2.5.0Data.Text.Internal.BuilderBuilderid