h$7d       !"#$%&'()*+,-./0123456789:;<=>?@ Debug Printing CombinatorsNone< !#$%&'(+-./012356789:<=>? ABCDEFGHIJ PreludeNone< !#$%&'(+-./012356789:<=>?"KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DFGHIJ PreludeNone< !#$%&'(+-./012356789:<=>?aKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DFGHIJ None= !#$%&'(+-./012356789:<=>? Data Type None< !#$%&'(+-./012356789:<=>?exonThe parts of an interpolation quasiquote. Text is split at each whitespace and interpolation splice marked by #{ and }.InternalNone< !#$%&'(+-./012356789:<=>?zexon/The combined segments, either empty or a value. Data Type  , InternalNone< !#$%&'(+-./012356789:<=>?Iexon0An intermediate representation for internal use.The Quasiquote Body ParserNone< !#$%&'(+-./012356789:<=>?   InternalNone< !#$%&'(+-./012356789:<=>?!exonMonoidally 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  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.(exonThe tag for the quoter  , keeping whitespace verbatim.)exonThe tag for the default quoter  .*exon Variant of $$ that preserves whitespace verbatim.+exon Variant of '$ that preserves whitespace verbatim. "&%$'#()*+ )("&%$'#*+InternalNone< !#$%&'(+-./012356789:<=>?<exon3Constructor for a quasiquoter for an arbitrary tag.This can be used to define quoters with custom logic, requiring an instance of   for the given type:!import Exon.Class.Exon (Exon(..))*import Exon.Data.Segment (Segment(String))data Nlinstance (Monoid a, IsString a) => Exon Nl a where insertWhitespace s1 _ s2 = appendSegment @Nl (appendSegment @Nl s1 (String "\n")) s2exonnl = exonWith [t|Nl|][exonnl|one two three|]"one\ntwo\nthree"=exonA 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"xyz":This behavior can be customized by writing an instance of   .>exon A variant of =' that always keeps whitespace verbatim. 456789:;<=> 674589:;<=> None< !#$%&'(+-./012356789:<=>? y!"&%$#'()<=>=><"&%$#'()! !"#$%&'()*+,-./0 123456789:;<=>?@ABCDEFGHIJ KLMNOPQRSTUVWXYZ[\W]^W]_W`aW`bWXcWXdWXeZ[fWghWgiWjkWlmWlnWloWXpWqrWqsWqtWquWqvWqwWqxWqyWqzWq{Wq|Wq}Z~Z~Z~WWWWWWWWWWWWWWWWWWWgWgWgWgWgWgWgWgWgWgWgWgWXWXWXWXWXWXWXWWWWWWWWZ~Z~Z~Z~Z~Z~Z~Z~WWgWgWWWWWWWWWWWWWgWgWgWgWgWgWWWWWWWXWXWXWXWXWXWWWWWWWWWWWWWWWWWWWXWXWXWXWXWXWXWXZZZZZZZZZWWWWWWWWZZZZWgWgZZWWWWWWWZZZWZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWlWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWjWjWjWjWjWjWjWjWjWjWjWjWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW0WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWgWgWgWgWgWgWgWgWqWqWW]W]W]W]W]W]W]$W]W]W]W]W]W]W]W]W]W]W]W]W]W]WWWWWWWWWWWWWWWWW`W`W`WWWWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWWWWWWZ~Z~Z~        exon-0.2.0.0-inplaceExon.Data.SegmentExon.Data.ResultExon.Data.RawSegment Exon.ParseExon.CombinatorsExon.Class.Exon Exon.Quote Exon.Debug Exon.PreludePrelude Paths_exonExonexonwsexon Exon.ClassSegmentString Whitespace Expression $fEqSegment $fShowSegmentResultEmpty$fMonoidResult$fSemigroupResult $fEqResult $fShowResult$fFoldableResult RawSegment WsSegment StringSegment ExpSegment$fEqRawSegment$fShowRawSegmentParserspanws whitespacebefore finishBeforeexpr interpolation untilTokenEndtextsegmentparserparse intercalateisEmptyconvertSegment appendSegmentinsertWhitespaceconcatSegmentsKeepWhitespace ExonDefault convertKeepWs concatKeepWs$fExonExonDefault->$fExonExonDefaultByteString$fExonExonDefaultByteString0$fExonExonDefaultText$fExonExonDefaultText0$fExonExonDefault[]$fExonKeepWhitespacea$fExonExonDefaultaQOrIOfileExtensions exonError segmentsQreifyExp reifySegments quoteExpWithquoteExpexonWith$fQOrIOQ $fQOrIOIOsrcLoc debugPrintdebugPrintWithLocdbgdbgsWithdbgsdbgs_trtrstrs'baseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemap$coerceGHC.Real fromIntegral realToFrac Control.MonadguardGHC.ExtsIsListfromList fromListNjoinGHC.EnumBoundedminBoundmaxBoundEnumpredsucctoEnumfromEnum enumFromToenumFromThenToenumFrom enumFromThen GHC.ClassesEq==/= GHC.FloatFloatingatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtpiexp Fractionalrecip fromRational/IntegraldivModquotRemmoddivrem toIntegerquotMonadreturn>>=>>Functorfmap<$GHC.NumNumsignumabs fromIntegernegate-+*Ord<<=>maxmin>=compareGHC.ReadReadReal toRational RealFloatatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN encodeFloat decodeFloat floatRange floatRadix floatDigitsRealFracfloorceilingroundproperFractiontruncateGHC.ShowShowData.Typeable.InternalTypeableControl.Monad.Fail MonadFailfail Data.StringIsString fromString Applicative<*liftA2*>pure<*> Data.FoldableFoldablefoldMap'foldfoldl'nullfoldMaplengthtoListfoldrData.Traversable Traversablesequence sequenceAtraversemapM GHC.GenericsGeneric GHC.TypeNatsKnownNatGHC.OverloadedLabelsIsLabel fromLabel Semigroupstimes<>sconcatMonoidmconcatmemptymappend GHC.TypesBoolFalseTrueCharDoubleD#FloatF#IntGHC.IntInt8Int16Int32Int64integer-wired-inGHC.Integer.TypeInteger GHC.NaturalNatural GHC.MaybeMaybeNothingJustOrderingGTLTEQRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherLeftRightType ConstraintNatCmpNat CoercibleGHC.Stack.Types CallStackGHC.IO.Handle.TypesHandleData.Functor.ContravariantcomparisonEquivalencedefaultEquivalencedefaultComparison>$$<>$<$<phantom Contravariant contramap>$ Predicate getPredicate Comparison getComparison EquivalencegetEquivalenceOpgetOpData.Functor.ComposeCompose getCompose Data.VoidvacuousabsurdVoidData.Semigroup mtimesDefaultcycle1 WrappedMonoidOption getOptionsortWithData.BitraversablebifoldMapDefault bimapDefaultbifor bisequence Bitraversable bitraverseData.BifoldablebifindbiallbianybiorbiandbielembilengthbinullbiListbiasum bisequence_bifor_ bitraverse_bifoldlMbifoldl'bifoldrMbifoldr' Bifoldablebifoldlbifoldrbifold bifoldMapData.Bifunctor BifunctorsecondfirstbimapData.List.NonEmptynonEmptyGHC.ExecutionStackshowStackTrace getStackTraceControl.Monad.IO.ClassMonadIOliftIOmfilter<$!>unless replicateM_ replicateM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM mapAccumR mapAccumLforMControl.ApplicativeoptionalZipList getZipList Control.Arrow&&&Data.Functor.IdentityIdentity runIdentity System.IOwithFileGHC.IO.Handle.FDstderrstdin GHC.StackwithFrozenCallStack callStack GHC.Conc.Sync writeTVarreadTVarnewTVarcatchSTMthrowSTMSTMTVarstdout BufferModeBlockBuffering NoBuffering LineBuffering GHC.IORefIORefGHC.IOFilePath GHC.ExceptionprettyCallStack prettySrcLocGHC.Exception.Type ExceptiondisplayException toException fromExceptionData.Functor.ConstConstgetConstfindallanyorand concatMapconcatasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlM Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.Internal stimesMonoidstimesIdempotentDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt someNatValnatValSomeNat Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupgenericReplicategenericSplitAt genericDrop genericTake genericLength transpose intersperse isPrefixOf Text.Read readMaybereads fromRightfromLeftisRightisLeftpartitionEithersrightsleftseitherData.Ord comparingDowngetDown Data.ProxyProxyControl.Category>>><<< GHC.IO.IOModeIOMode ReadWriteMode AppendModeReadMode WriteMode byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedxorlcmgcd^^^oddeven denominator numeratorboundedEnumFromThenboundedEnumFromGHC.Charchrunzip3unzipzipWithzip3reversebreaksplitAtdroptake dropWhile takeWhile replicaterepeatiteratescanr1scanrscanl'scanl1scanluncons Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybe Data.Boolbool Data.Function&onfix Data.Functorvoid$><&><$>swapuncurrycurryGHC.MVarMVarsubtract GHC.Stack.CCScurrentCallStackasTypeOf$!flip.constidmaxIntminIntordwhen=<<liftA3<**> Alternativemanysomeempty<|> MonadPlusmzeromplusNonEmpty:|GHC.Err undefined getCallStack HasCallStackstimesIdempotentMonoid SomeException&&||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$!!deepseqNFDatarnf'hashable-1.3.0.0-8aN220g6Yxi4w8vClwweOTData.Hashable.ClassHashable hashWithSalttransformers-0.5.6.2Control.Monad.Trans.Class MonadTransliftControl.Monad.Trans.Identity IdentityT runIdentityT mtl-2.2.2Control.Monad.State.Classgetsmodify'modify MonadStatestategetputControl.Monad.Reader.Classasks MonadReaderreaderasklocalControl.Monad.Trans.ExceptExceptT runExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader withReader withReaderT Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState execState withState evalStateT execStateT%relude-1.0.0.1-17tawOywVUX7QYFlJ4bkOoRelude.Lifted.Env lookupEnvgetArgsRelude.Lifted.TerminalputStrLnputStrprintgetLineRelude.Foldable.FoldanyMallMorMandMnotElemelemproductsumfoldMapMfoldMapAasumMap flipfoldl'Relude.Lifted.ConcurrentnewEmptyTMVarIO newTMVarIO readTVarIO newTVarIO atomically tryTakeMVar tryReadMVar tryPutMVartakeMVarswapMVarreadMVarputMVarnewMVar newEmptyMVarRelude.Lifted.Handle hGetBuffering hSetBufferinghIsEOFhFlush Relude.List partitionWithmaybeAt!!?Relude.Container.OneOneItemOneoneRelude.NumericintegerToNaturalintegerToBoundedRelude.Bool.Guard||^&&^guardedguardMifMunlessMwhenMRelude.DeepSeq evaluateNF_ evaluateNF evaluateWHNF_ evaluateWHNFRelude.ExceptionbugExcBugRelude.List.NonEmptytaillastinithead whenNotNullM whenNotNull viaNonEmpty Relude.Monad infinitely chainedToRelude.Monad.Either whenRightM_ whenRightM whenRight_ whenRight whenLeftM_ whenLeftM whenLeft_whenLeft maybeToLeft maybeToRight rightToMaybe leftToMaybe Relude.DebugerrortraceId traceShowMtraceM traceShowWith traceShowId traceShowtrace Undefined Relude.File appendFileLBS writeFileLBS readFileLBS appendFileBS writeFileBS readFileBSappendFileLTextwriteFileLText readFileLTextappendFileText writeFileText readFileTextRelude.Lifted.File appendFile writeFilereadFile Relude.PrintputLBSLnputLBSputBSLnputBS putLTextLnputLText putTextLnputTextRelude.String.Conversion fromStrictfromLazyshow readEitherLText LByteString ConvertUtf8decodeUtf8Strict encodeUtf8 decodeUtf8ToTexttoTextToLTexttoLTextToStringtoString LazyStricttoStricttoLazyRelude.String.Reexportunwordswordsunlineslines Relude.NubintNubOnintNub unstableNubsortNubhashNubordNubOnordNub Relude.Monoid memptyIfTrue memptyIfFalse maybeToMonoidRelude.Monad.Trans hoistEither hoistMaybeexecutingStateexecutingStateTevaluatingStateevaluatingStateT usingState usingStateT etaReaderT usingReader usingReaderTRelude.Monad.Maybe mapMaybeM whenNothingM_ whenNothingM whenNothing_ whenNothing whenJustMwhenJust?:Relude.List.ReexportcycleRelude.Lifted.IORefatomicWriteIORefatomicModifyIORef'_atomicModifyIORef_atomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef writeIORef readIORefnewIORefRelude.Lifted.Exitdie exitSuccess exitFailureexitWith Relude.Enum inverseMapuniverseNonEmptyuniverseRelude.Functor.Fmap??flap<<$>>Relude.FunctionidentityRelude.Applicative appliedTopass4unordered-containers-0.2.14.0-FlR2lLJkrON94gCTKL3OmVData.HashMap.InternalHashMapData.HashSet.InternalHashSetControl.Monad.Trans.MaybeMaybeT runMaybeTmaybeToExceptTexceptToMaybeT text-1.2.4.1Data.Text.Encoding.ErrorUnicodeException OnDecodeErrorOnError strictDecode lenientDecodeData.Text.InternalTextData.Text.EncodingdecodeUtf8With decodeUtf8' stm-2.5.0.0Control.Concurrent.STM.TMVarTMVarnewTMVar newEmptyTMVar takeTMVar tryTakeTMVarputTMVar tryPutTMVar readTMVar tryReadTMVar swapTMVar isEmptyTMVar mkWeakTMVarControl.Concurrent.STM.TVar modifyTVar'version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName