h$G`1"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          None< !#$%&'(+-./012356789:<=>?3  None< !#$%&'(+-./012356789:<=>?  !&*+ ,-. /012  3456789:;<)('=>?@AB"C%#$DaeEF`GbHIJKLMNOcdPjhiQRSTUVWXYfgZ[\]^_klmnopqrutsxwv{zy~}|Z  !&*+ ,-. /012  3456789:;<)('=>?@AB"C%#$DaeEF`GbHIJKLMNOcdPjhiQRSTUVWXYfg[\]^_klmnopqrutsxwv{zy~}| None< !#$%&'(+-./012356789:<=>?;  !&*+ ,-. /012  3456789:;<)('=>?@AB"C%#$DaeEF`GbHIJKLMNOcdPjhiQRSTUVWXYfgZ[\]^_klmnopqrutsxwv{zy~}| None= !#$%&'(+-./012356789:<=>?"-InternalNone< !#$%&'(+-./012356789:<=>?#LexonThe parts of an interpolation quasiquote. Text is split at each whitespace and interpolation splice marked by #{ and }.InternalNone< !#$%&'(+-./012356789:<=>?$exon/The combined segments, either empty or a value.None< !#$%&'(+-./012356789:<=>?$InternalNone< !#$%&'(+-./012356789:<=>?%  InternalNone< !#$%&'(+-./012356789:<=>?&9exonMonoidally combine all elements in the list, appending the separator between each pair of elements.InternalNone< !#$%&'(+-./012356789:<=>?-exonThis class is responsible for combining segments of an interpolated string, allowing users to define their own rules for how the result is constructed. The default implementation converts each literal part with ; and uses the result type's C to concatenate them.The raw parts are encoded as , getting combined into a .The default for * skips whitespace by encoding it into the  constructor , which is a unit object. To change this behavior, it can be easily overridden: newtype Thing = Thing String deriving newtype (IsString, Semigroup, Monoid, Show) instance Exon ExonDefault Thing where convertSegment = case Segment.String s -> Result (Thing s) Segment.Expression thing -> Result thing Segment.Whitespace _ -> Result (Thing " >>> ") insertWhitespace s1 ws s2 = appendSegment ExonDefault (appendSegment +ExonDefault s1 (Segment.Whitespace ws)) s2 exonThis check is used to allow empty expression segments to be skipped when they are empty. The default is to never skip expressions.exon Convert a  to a #. The default implementation uses ;# and ignores whitespace, returning .exon Append a  to a #. The default implementation uses ".exonAppend whitespace and a  to a , i.e. joining two parts of the interpolation by whitespace. The default implementation ignores the whitespace, calling  with the second argument.exonThe entry point for concatenation, taking a list of segments parsed from the interpolation. The default implementation skips leading whitespace and calls  and  to concatenate.   InternalNone< !#$%&'(+-./012356789:<=>?0MexonA quasiquoter that allows interpolation, concatenating the resulting segments monoidally.<[exon|write #{show @Text (5 :: Int)} lines of code|] :: Text"write 5 lines of code":The default implementation for any non-stringly type uses ;' to construct the literal segments and $0 to combine them, ignoring whitespace segments.newtype Part = Part Text deriving newtype (Show, Semigroup, Monoid, IsString)[exon|x #{Part "y"}z|] :: Part Part "xyz":This behavior can be customized by writing an instance of   . None< !#$%&'(+-./012356789:<=>?0           ! "# "$ "% "&'(') * + , - . /0 12 3 4 5 6 78 9: 9; 9< = > ? @ A B C D "E "F'G HI J K L M N'O PQ R HS T UV WX /Y 1Z [ \] ^_ `a bc de f ghihjhkhlhm no np nq nrstu vw xyhz { |h}h~     hhh bh hhh x xh  hhh                                    9                                      d 7 7 7 7 7 7 7 7 7 7 7 7 ^ ^ ^ ^ ^ ^ ^                                      \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \                                 b b b b                                          H H H H H H H H H H H H H H H H H H H H H H H H H H H H                           " " " " " " " "                                                                                  ''''''''''                   exon-0.1.0.0-inplace Exon.Prelude Exon.DebugExon.Data.SegmentExon.Data.ResultExon.Data.RawSegment Exon.ParseExon.CombinatorsExon.Class.Exon Exon.QuotePrelude Paths_exonExonbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemap$coerceGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturnControl.Monad.Failfail Data.String fromString fromIntegral realToFrac toInteger toRational Control.MonadguardGHC.ExtsIsListfromList fromListN<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowData.Typeable.InternalTypeable MonadFailIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric GHC.TypeNatsKnownNatGHC.OverloadedLabelsIsLabel SemigroupMonoid GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64integer-wired-inGHC.Integer.TypeInteger GHC.NaturalNatural GHC.MaybeMaybeOrderingRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintNatCmpNat CoercibleGHC.Stack.Types CallStackD#FalseF#NothingJustTrueLeftRightLTEQGTGHC.IO.Handle.TypesHandleData.Functor.ContravariantcomparisonEquivalencedefaultEquivalencedefaultComparison>$$<>$<$<phantom>$ contramap Contravariant getPredicate Predicate getComparison ComparisongetEquivalence EquivalencegetOpOpData.Functor.Compose getComposeCompose Data.VoidvacuousabsurdVoidData.Semigroup mtimesDefaultcycle1 WrappedMonoid getOptionOptionsortWithData.BitraversablebifoldMapDefault bimapDefaultbifor bisequence bitraverse BitraversableData.BifoldablebifindbiallbianybiorbiandbielembilengthbinullbiListbiasum bisequence_bifor_ bitraverse_bifoldlMbifoldl'bifoldrMbifoldr'bifoldlbifoldr bifoldMapbifold BifoldableData.Bifunctorsecondfirstbimap BifunctorData.List.NonEmptynonEmptyGHC.ExecutionStackshowStackTrace getStackTraceControl.Monad.IO.ClassliftIOMonadIO fromLabelmfilter<$!>unless replicateM_ replicateM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM mapAccumR mapAccumLforMsequencemapM sequenceAtraverseControl.Applicativeoptional getZipListZipList Control.Arrow&&&Data.Functor.Identity runIdentityIdentity System.IOwithFileGHC.IO.Handle.FDstderrstdin GHC.StackwithFrozenCallStack callStack GHC.Conc.Sync writeTVarreadTVarnewTVarcatchSTMthrowSTMSTMTVarstdoutBlockBuffering LineBuffering NoBuffering BufferMode GHC.IORefIORefGHC.IOFilePath GHC.ExceptionprettyCallStack prettySrcLocGHC.Exception.Type SomeExceptiondisplayException fromException toException ExceptionData.Functor.ConstgetConstConstfindallanyorand concatMapconcatasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMlengthnulltoListfoldl'foldrfoldMap'foldMapfold Data.MonoidgetFirstFirstgetLastLastgetApApData.Semigroup.Internal stimesMonoidstimesIdempotentgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetAltAlt someNatValnatValSomeNat Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupgenericReplicategenericSplitAt genericDrop genericTake genericLength transpose intercalate intersperse isPrefixOf Text.Read readMaybereads fromRightfromLeftisRightisLeftpartitionEithersrightsleftseitherData.Ord comparinggetDownDown Data.ProxyProxyControl.Category>>><<< GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModeatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN encodeFloat decodeFloat floatRange floatDigits floatRadix byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedxorlcmgcd^^^oddeven denominator numeratordivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionboundedEnumFromThenboundedEnumFrommaxBoundminBoundfromEnumtoEnumpredsuccGHC.Charchrunzip3unzipzipWithzip3reversebreakspansplitAtdroptake dropWhile takeWhile replicaterepeatiteratescanr1scanrscanl'scanl1scanluncons Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybe Data.Boolbool Data.Function&onfix Data.Functorvoid$><&><$>swapuncurrycurryGHC.MVarMVarsubtractsignumabs*+ GHC.Stack.CCScurrentCallStackasTypeOf$!flip.constidmaxIntminIntordwhen=<<liftA3<**>stimessconcat<$<*liftA2manysome<|>empty Alternativemplusmzero MonadPlus:|NonEmptyStringGHC.Err undefined getCallStack HasCallStackstimesIdempotentMonoidcompare<<=>maxmin/=&&||notbytestring-0.10.12.0Data.ByteString.Short.Internal fromShortShortByteStringData.ByteString.Internal ByteStringtoShortcontainers-0.6.2.1Data.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Map.InternalMapData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.4.0Control.DeepSeqforce$!!deepseqrnfNFData'hashable-1.3.0.0-8aN220g6Yxi4w8vClwweOTData.Hashable.Class hashWithSaltHashabletransformers-0.5.6.2Control.Monad.Trans.Classlift MonadTransControl.Monad.Trans.Identity runIdentityT IdentityT mtl-2.2.2Control.Monad.State.Classgetsmodify'modifystateputget MonadStateControl.Monad.Reader.Classasksreaderlocalask MonadReaderControl.Monad.Trans.ExceptExceptT runExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader withReader withReaderT Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState execState withState evalStateT execStateT stm-2.5.0.0Control.Concurrent.STM.TVar modifyTVar'Control.Concurrent.STM.TMVar mkWeakTMVar isEmptyTMVar swapTMVar tryReadTMVar readTMVar tryPutTMVarputTMVar tryTakeTMVar takeTMVar newEmptyTMVarnewTMVarTMVar text-1.2.4.1Data.Text.Encoding decodeUtf8'decodeUtf8WithData.Text.InternalTextData.Text.Encoding.Error lenientDecode strictDecodeOnError OnDecodeErrorUnicodeExceptionControl.Monad.Trans.MaybeexceptToMaybeTmaybeToExceptT runMaybeTMaybeT4unordered-containers-0.2.14.0-FlR2lLJkrON94gCTKL3OmVData.HashSet.InternalHashSetData.HashMap.InternalHashMap%relude-1.0.0.1-17tawOywVUX7QYFlJ4bkOoRelude.Applicative appliedTopassRelude.Bool.Guard&&^guardMguardedifMunlessMwhenM||^ Relude.DebugerrortracetraceIdtraceM traceShow traceShowId traceShowM traceShowWithRelude.DeepSeq evaluateNF evaluateNF_ evaluateWHNF evaluateWHNF_ Relude.Enum inverseMapuniverseuniverseNonEmptyRelude.ExceptionExcbug Relude.File appendFileBS appendFileLBSappendFileLTextappendFileText readFileBS readFileLBS readFileLText readFileText writeFileBS writeFileLBSwriteFileLText writeFileTextRelude.Foldable.FoldallMandManyMasumMapelem flipfoldl'foldMapAfoldMapMnotElemorMproductsumRelude.FunctionidentityRelude.Functor.Fmap<<$>>??flapRelude.Lifted.Concurrent atomically newEmptyMVarnewEmptyTMVarIOnewMVar newTMVarIO newTVarIOputMVarreadMVar readTVarIOswapMVartakeMVar tryPutMVar tryReadMVar tryTakeMVarRelude.Lifted.EnvgetArgs lookupEnvRelude.Lifted.Exitdie exitFailure exitSuccessexitWithRelude.Lifted.File appendFilereadFile writeFileRelude.Lifted.HandlehFlush hGetBufferinghIsEOF hSetBufferingRelude.Lifted.IORefatomicModifyIORefatomicModifyIORef'atomicModifyIORef'_atomicModifyIORef_atomicWriteIORef modifyIORef modifyIORef'newIORef readIORef writeIORefRelude.Lifted.TerminalgetLineprintputStrputStrLn Relude.List!!?maybeAt partitionWithRelude.List.NonEmptyheadinitlasttail viaNonEmpty whenNotNull whenNotNullMRelude.List.Reexportcycle Relude.Monad chainedTo infinitelyRelude.Monad.Either leftToMaybe maybeToLeft maybeToRight rightToMaybewhenLeft whenLeftM whenLeftM_ whenLeft_ whenRight whenRightM whenRightM_ whenRight_Relude.Monad.Maybe?: mapMaybeMwhenJust whenJustM whenNothing whenNothingM whenNothingM_ whenNothing_Relude.Monad.Trans etaReaderTevaluatingStateevaluatingStateTexecutingStateexecutingStateT hoistEither hoistMaybe usingReader usingReaderT usingState usingStateT Relude.Monoid maybeToMonoid memptyIfFalse memptyIfTrue Relude.NubhashNubintNubintNubOnordNubordNubOnsortNub unstableNubRelude.NumericintegerToBoundedintegerToNatural Relude.PrintputBSputBSLnputLBSputLBSLnputLText putLTextLnputText putTextLnRelude.String.ConversionfromLazy fromStrict readEithershowRelude.String.ReexportlinesunlinesunwordswordsRelude.Container.OneOneOneItemone UndefinedBug ConvertUtf8 decodeUtf8decodeUtf8Strict encodeUtf8 LByteStringLText LazyStricttoLazytoStrictToLTexttoLTextToStringtoStringToTexttoTextsrcLoc debugPrintdebugPrintWithLocdbgdbgsWithdbgsdbgs_trtrstrs'Segment Whitespace Expression $fEqSegment $fShowSegmentResultEmpty$fMonoidResult$fSemigroupResult $fEqResult $fShowResult$fFoldableResult RawSegment WsSegment StringSegment ExpSegment$fEqRawSegment$fShowRawSegmentParserws whitespacebefore finishBeforeexpr interpolation untilTokenEndtextsegmentparserparseisEmptyconvertSegment appendSegmentinsertWhitespaceconcatSegmentsKeepWhitespace ExonDefault convertKeepWs concatKeepWs$fExonExonDefaultByteString$fExonExonDefaultByteString0$fExonExonDefaultText$fExonExonDefaultText0$fExonExonDefault[]$fExonExonDefaultaQOrIOfileExtensions exonError segmentsQreifyExp reifySegmentsquoteExpexon$fQOrIOQ $fQOrIOIOversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName