eT     Container utilities Safe-Inferred findJust f c returns the first non- value of c mapped with f , or  if there is none.  compose f5 returns the function composition of the elements of f. orderByKey k l orders l by the sort keys generated by k. halfZipWith m b e zips the elements of b and e with m, using the structure of b.  is returned if and only if b$ does not have enough elements. Like *, but with a function to create the base. List utilities Safe-InferredThe last element, or  if there is none.maybeLast [] == NothingmaybeLast (l ++ [e]) == Just e dropWhileAtMost p l is like  dropWhile p, but drops at most l elements.%dropWhileAtMost (== ' ') 2 " a bc " " a bc " !mergeLongerSuccessions p c l keeps only the first c( elements of successive elements of l satisfying the predicate p.?mergeLongerSuccessions Data.Char.isSpace 2 " ab c d\LF e "" ab c d\n e " " takeEvery p l takes every pth element of l from the first one.takeEvery 2 "apple""ape"takeEvery 1 l == l#concatenateRuns p l repeatedly concatenates p lists of l.+concatenateRuns 2 ["a", "b", "c", "d", "e"]["ab","cd","e"] $concatenateShiftedRuns p s l first takes s lists of l+, followed by repeatedly concatenating p lists.4concatenateShiftedRuns 2 1 ["a", "b", "c", "d", "e"]["a","bc","de"]=p <= 0 || concatenateShiftedRuns p 0 l == concatenateRuns p l !"#$ !"#$ !"#$Splitting lists on sublists Safe-Inferred% What to do with the delimiters? &&Strategy to split a list on sublists. ' separate d l splits l on the delimiters dH, which are matched in the given order. The delimiters are not kept.,separate ["pineapple", "pine"] "0pineapple1" ["0","1"],separate ["pine", "pineapple"] "0pineapple1"["0","apple1"] ( split s l splits l according to the strategy s. ) rawSplit s l splits l on the sublists s, keeping the separators.+odd . length $ separate ["apple", "pine"] l*stripFirstPrefix p l returns the first element of p which is a prefix of l and the rest of l . It returns  if there is no such element.6stripFirstPrefix ["\LF", "\CR\LF", "\CR"] "\CR\LFpine"Just ("\r\n","pine")&stripFirstPrefix ["apple"] "pineapple"Nothing %+,-.&/01'()*'%.-,+&/01'()*Handling Unicode newlines Safe-InferredkUnicode newline strings ordered by descending length. This corresponds to the set of newlines from  8http://www.unicode.org/standard/reports/tr13/tr13-5.html. +Concatenates strings with default newlines "\n" between.Unlike 24, this does not append a newline to the last string.$joinSeparatedLines ["apple", "pine"]"apple\npine" %Breaks a string up into its lines at +. The resulting strings do not contain .Unlike 3, this interprets a newline as a separator, not a terminator. Thus, if the input string ends with a newline, the output list ends with the empty string.'splitSeparatedLines "0\n1\r2\r\n3\n\r4"["0","1","2","3","","4"]-last (splitSeparatedLines $ s ++ "\LF") == "" Comments without location Safe-Inferred456789:;<=>?@AB 456789:;=>?@A47658:9;<=>?@ABTrees with unique labels Safe-Inferred C   C)Parsing nested maps according to a formatNone D EFGHI   D  EFGHI Naming data streams Safe-InferredAn informal reference to a data stream. For example, this could be the name of a file stream to be used in error messages.  Creates a . J% is guaranteed to return this string.show (createStreamName s) == s#The standard input stream (stdin). KLKL 'Facade for the location handling of HSE Safe-InferredMNOPQRSTUVWXYZ[\]^_`abcdefghijklmMOQRTUVWXYZ[\^_`abMNOPQRSTUVWXYZ[\]^_`abcdefghi (Facade for HSE without location handlingNonenopq/rstuvwxyz{|}~nonopq .Exact syntax tree as parsed and printed by HSENoneAnnotations of syntax trees Safe-InferredErrors for feedback to usersNone Result with possible errorsNoneParametrization of formattingNone%Number of characters used to indent.  Syntax tree typesNoneWorking with lines of codeNone 8Attaching comments to the annotations of the syntax treeNone3Sorting parts of code where the order is irrelevantNone              :Detaching comments from the annotations of the syntax treeNone  .Rearranging the actual code (not the comments)None  Rearranging the commentsNone!"#$%&'(!!"#$%&'(7Invocation of the process parts with assertion checkingNone)*+,-./012345678)*+,-.1 )*+,-./012345678Formatting process itselfNone9:99:Overall configurationNone;<=>?@;=>?@;<=>?@Root of formattingNoneABABHaskell source code formatterNone;=>?)Sample format definition for a style fileNoneC !"#$%&#'()*+ , - ./0123456789:;5<=>?@ABCDEFGHIJKLMENO5PQ5PR S T U V W X Y Z Z [ \ ] ^ _ `abcdefg5hi , j k k l l m n o 5 p q r s t u v w x y z { | } ~      ]        !"##$%&'()*+,-./0123456788,0$9:2;<=>?@A2BCCDEFGHIhaskell-formatter-1.0.0+Language.Haskell.Formatter.Internal.Newline+Language.Haskell.Formatter.Internal.MapTree.Language.Haskell.Formatter.Internal.TreeFormatLanguage.Haskell.Formatter3Language.Haskell.Formatter.Internal.StyleFileFormat(Language.Haskell.Formatter.Toolkit.Visit+Language.Haskell.Formatter.Toolkit.ListTool+Language.Haskell.Formatter.Toolkit.Splitter&Language.Haskell.Formatter.CommentCore-Language.Haskell.Formatter.Toolkit.StreamName#Language.Haskell.Formatter.Location!Language.Haskell.Formatter.Source$Language.Haskell.Formatter.ExactCode'Language.Haskell.Formatter.Process.Note Language.Haskell.Formatter.Error!Language.Haskell.Formatter.Result Language.Haskell.Formatter.Style'Language.Haskell.Formatter.Process.Code+Language.Haskell.Formatter.Process.LineTool1Language.Haskell.Formatter.Process.AttachComments/Language.Haskell.Formatter.Process.CodeOrdering1Language.Haskell.Formatter.Process.DetachComments3Language.Haskell.Formatter.Process.FormatActualCode1Language.Haskell.Formatter.Process.FormatComments,Language.Haskell.Formatter.Process.Formatter*Language.Haskell.Formatter.Process.Control(Language.Haskell.Formatter.ConfigurationLanguage.Haskell.Formatter.MainnewlinesjoinSeparatedLinessplitSeparatedLines MapForestMapTreeNodeLeafisEmptysummarizeLeaves indentTreeSingleFloatingLimitedIntegerBoolean TreeFormat parseYamlFile StreamNamecreateStreamName standardInputErrorisAssertionError defaultFormatformat treeFormatfindJustbase Data.MaybeNothingcompose orderByKey halfZipWithmapAccumulateLeftWithCreationData.Traversable mapAccumL maybeLastdropWhileAtMostmergeLongerSuccessions takeEveryconcatenateRunsconcatenateShiftedRunsDelimiterPolicySplitterseparatesplitrawSplitstripFirstPrefix MergeRight MergeLeftSeparateDropdelimiterPolicydelimiterQueue Data.ListunlineslinesDocumentationDisplacementNoneAfterActualCodeBeforeActualCodeKindNestedOrdinary CommentCorekindcontentcreatewrappedLineCountdocumentationDisplacement$fShowCommentCore$fFunctorMapTreeRawLeafdefaultInterpret interpret matchTree matchLeafunexpectedMessageGHC.Showshow$fShowStreamNameColumnLine Portioned getPortionNaturalplusminus streamNamegetLine getColumncreatePositiongetEndPositionreplaceNestedPortionLinesreplacePortionLines stringPortion getStartLinegetStartColumn getEndLine getEndColumn$fPortionedComment$fPortionedModule$fPortionedSrcSpanInfo$fNaturalColumn $fNaturalLine $fEnumColumn $fEnumLinehaskell-src-exts-1.16.0.1Language.Haskell.Exts.SrcLocSrcLocSrcSpan SrcSpanInfo getPointLoc createComment commentCore commentKindcommentContentLanguage.Haskell.Exts.AnnotatedparseFileContentsWithCommentsparseFileContentsLanguage.Haskell.Exts.Pretty prettyPrintprettyPrintWithModeprettyPrintStyleMode defaultMode PPOffsideRule PPSemiColonPPInLine PPNoLayoutPPLayoutIndent linePragmaslayoutspacing onsideIndent whereIndent letIndent caseIndent multiIfIndentdoIndent classIndentPPHsModePretty Language.Haskell.Exts.ParseMonaddefaultParseModeParseOk ParseFailed ParseResult parseFilename*Language.Haskell.Exts.Annotated.ExactPrint exactPrintLanguage.Haskell.Exts.CommentsComment&Language.Haskell.Exts.Annotated.Syntax=~=Modulepretty-1.1.1.1Text.PrettyPrint.HughesPJMode OneLineModeLeftMode ZigZagModePageModeStylemode lineLengthribbonsPerLinestyle ExactCode actualCodecomments$fPortionedExactCode$fShowExactCodeLocationCommentNote locationNote commentNoteIndentedCommentcommentStartColumn CommentBox EmptyLine ActualComment CommentNotecommentsBefore commentsAftercreateCommentNotecreateIndentedCommentcreateLocationCommentNotereplaceCommentBoxesreplaceCommentBoxreplaceIndentedCommentreplaceCommentStartColumnreplaceCommentNote$fPortionedLocationCommentNote$fMonoidCommentNoteAssertionError ParseErrorStyleFormatErrorcreateStyleFormatErrorcreateParseErrorcreateAssertionError $fShowErrorResulttoEither fatalErrorfatalAssertionError $fMonadResult$fApplicativeResult$fFunctorResult IndentationChecklineLengthLimitsuccessiveEmptyLinesLimitclassIndentation doIndentationcaseIndentationletIndentationwhereIndentationonsideIndentationorderImportDeclarationsorderImportEntities defaultStylecheck createChecks createCheckLocatableCommentableCodeCommentableCode LocatableCode tryZipCodetryZipLocationsComments dropComments dropLocationsShiftShiftercountEmptyLines createShifternoShift shiftCode shiftLine lookupShiftCodeGap InfiniteUpper FiniteGap InfiniteLower AssignmentattachComments assignForCodeassignComments assignBeforeassignSingleton assignAfterdivideCommentscreateCommentscreateEmptyLinesorderByStartEndspread$fMonoidAssignmentreplaceImportDeclarationsimportEntityKey rootNameKeynameKeynestedImportEntityKeyorderRootImportEntitiesreplaceImportEntitiesorderNestedImportEntitiesreplaceNestedImportEntities ReservationdetachCommentsreservationShifter commentsShift commentShiftreserveForCodereserveForNoteaccumulateReservation$fMonoidReservationformatActualCodedefaultPrettyPrintrenderingStyleprepareformatCommentsmergeImpliedCommentscommentsImpliedByLocationscommentsDifferenceboxesDifference isEmptyLineindentToLineStartmergeSuccessiveEmptyLines FormatterCodedgetCodecheckedAttachCommentstransformNotestransformWithCheckcheckedFormatCommentscheckedDetachComments$fCodedExactCode $fCodedModulecreateFormatter ConfigurationconfigurationStyleconfigurationStreamNamedefaultConfiguration tryFormatparse