)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(Safec)*+None-FST,-./-./None+-67;<=FQSTV!23$ observes data structures in flight.An example of use is 4 map (+1) . observe "intermeduate" . map (+2) DIn this example, we observe the value that flows from the producer map (+2) to the consumer map (+1).38 can also observe functions as well a structural values.3Functions which you suspect of misbehaving are annotated with observe and should have a cost centre set. The name of the function, the label of the cost centre and the label given to observe need to be the same. Consider the following function: triple x = x + x&This function is annotated as follows: Atriple y = (observe "triple" (\x -> {# SCC "triple" #} x + x)) y'To produce computation statements like:  triple 3 = 6+To observe a value its type needs to be of class Observable. We provided instances for many types already. If you have defined your own type, and want to observe a function that takes a value of this type as argument or returns a value of this type, an Observable instance can be derived as follows: \ data MyType = MyNumber Int | MyName String deriving Generic instance Observable MyType @  !"#&%$')(*+,-./0123456789:;<=>?@ABCDEFGHIh'(())#$%&*!"ONMnLKJYXWVUTml+kjihgfe,-dcba`_^]\[Z RQP./0123456789:;< oS=>?@ABC DEFGHI  !"#$%&'(())09 None%K0123456789:;<=>?@ABC12345687 Safe%DE None  "#%FT^++FThe zipper of span listsG4A snoc list with the spans to the left of the cursorH5A cons list with the spans to the right of the cursorIBA list of computation spans. Negative UIDs denote paused spans.J'A bijection between SpanList and [Span]K1A forgetful mapping between SpanZipper and [Span] FLMNOPQRSTUVWXFYZG[HI\]LMNHLighweight algorithmic debugging based on observing intermediate values.(c) 2016 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone7.wxyz{|}~z{{||}~wxywxyz{{||}~ Safe/'^_`abcde BSD3!Olaf Chitil <O.Chitil@kent.ac.uk>portableSafeNf)A Document represents a *set* of layouts.gLA space, if the following still fits on the current line, otherwise newline.hLNothing, if the following still fits on the current line, otherwise newline.i5Increase identation relative to the *current* column.j Combine with a space in between.kCombine with a l in between.mCombine with a n in between.oCombine with a g in between.pCombine with a h in between.q)Combine non-empty list of documents with j, i.e., a space separator.r)Combine non-empty list of documents with k , i.e., a l separator.s)Combine non-empty list of documents with o , i.e., a g separator.tnCombine non-empty list of documents vertically as a group. Seperated by space instead if all fit on one line.u)Combine non-empty list of documents with v.w)Combine non-empty list of documents with m , i.e., a n separator.x)Combine non-empty list of documents with p , i.e., a h separator.yFCombine non-empty list of documents, filling lines as far as possible.z%The empty document; equal to text "".{`Atomic document consisting of just the given text. There should be no newline \n in the string.lEither a space or a new line.nEither nothing (z) or a new line.vHHorizontal composition of two documents. Is associative with identity z.|VMark document as group, that is, layout as a single line if possible. Within a group for all basic documents with several layouts the same layout is chosen, that is, they are all horizontal or all new lines. Within a vertical group there can be a horizontal group, but within a horizontal group all groups are also layouted horizontally.}FIncreases current indentation level (absolute). Assumes argument >= 0.~"Set indentation to current column.Pretty print within given width. Selects from the *set* of layouts that the document represents the widest that fits within the given width. If no such layout exists, then it will choose the narrowest that exceeds the given width.fghijkmopqrstuwxyz{lnv|}~fj6k5m5o5p5v6None%6SReconstructs functional values from a CDSSet. Returns a triple containing: 1. The arguments, if any, or an empty list for non function values 2. The result 3. The id of the CDSFun, if a functional value.None "#$%6;=>?FT^ZWreferences from the UID of an event to the UID of the corresponding top-level Fun event2reference from parent UID and position to location?The forest of computation trees. Also see the Libgraph library.Approximates the complexity of a computation tree by summing the length of the unjudged computation statements (i.e not Right or Wrong) in the tree.& & None6\None 067;<=STb2+Returns a Judgement (see Libgraph library).4Found counter example with simpler computation tree. Use propositions to judge a computation statement. First tries restricted and bottom for unevaluated expressions, then unrestricted, and finally with randomly generated values for unevaluated expressions.     None"#$CV]fGReturns the vertices satisfying the predicate. Doesn't alter the graph.HLighweight algorithmic debugging based on observing intermediate values.Q(c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2018 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone"#;=w "run some code and return the TraceThe main entry point; run some IO code, and debug inside it. After the IO action is completed, an algorithmic debugging session is started at  http://localhost:10000// to which you can connect with your webbrowser. For example: H main = runO $ do print (triple 3) print (triple 2) ~Hoed internal function that stores a serialized version of the tree on disk (assisted debugging spawns new instances of Hoed).#Repeat and trace a failing testcaseUse property based judging.#Repeat and trace a failing testcase Short for  runO . print.!;Only produces a trace. Useful for performance measurements.#GEntry point giving you access to the internals of Hoed. Also see: runO.$HTrace and write computation tree to file. Useful for regression testing.%)As logO, but with property-based judging.f'()*,-.038      !"#$%i3 "    # $%!'(())0.8-,* NoneN'+A handy TH wrapper for observing functions. N obs [d| trimPat :: Exp S -> Pat S -> Pat S trimPat vs = filterPat ((! freeVars vs) . void) |] is equivalent to: H trimPat = observe "trimPat" trimPat' trimPat' vs = filterPat .... ' accepts multiple declarations, and all the functions inside will be wrapped as above, while the rest of declarations will stay unchanged. As such it can be used to observe entire modules.(KA handy TH wrapper for debugging functions, offering more information than '  debug [d| quicksort [] = [] quicksort (x:xs) = quicksort lt ++ [x] ++ quicksort gt where (lt, gt) = partition (<= x) xs |]  expands to:  quicksort = observe "quicksort" quicksort' quicksort' [] = [] quicksort' (x:xs) = quicksort lt ++ [x] ++ quicksort gt where (observe "lt" -> lt, observe "lt" -> gt) = partition (<= x) xs ZThe additional information may lead to unnecessary questions in algorithmic debugging, '- is the recommended wrapper for that purpose.>List all the type variables of kind * (or do the best you can)'(('  !""#$%&'()*++,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~001;<=""G@DLsxyz{|}~cde      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F F G G H I J K L M N O P Q R S T U V W X Y  Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuvwxyz{|}~!Hoed-0.4.1-Fh2KHxaUpgT9nkXsBQ3eq3 Debug.NoHoedDebug.Hoed.RenderDebug.Hoed.CompTreeDebug.Hoed.Observe Debug.Hoed Debug.Hoed.THDebug.Hoed.CompatDebug.Hoed.FieldsDebug.Hoed.EventForestDebug.Hoed.ReadLineDebug.Hoed.Span Paths_HoedText.PrettyPrint.FPrettyDebug.Hoed.SerializeDebug.Hoed.PropDebug.Hoed.ConsoleSetmemberbase GHC.GenericsGenericReptofrom Data.OldListsortOn$libgraph-1.14-AJy13LrUf4nKnHh8DlJeOmData.Graph.Libgraph.CorearcsverticesrootGraphUIDParent parentUIDparentPositionParentPositionChangeObserveConsEnterFunEventeventUID eventParentchangeTrace ObserverMrunMOObserverO Observing GConstrain gconstrain GObservable gdmobservergdmObserveArgsgdmShallowShow Observableobserver constrain constrainBasegdmFunObserver observeBase observeOpaquethunkgthunk<<gdMapMgobserveobserve observer_ gdmobserver_unsafeWithUniqgenerateContextsendsendEnterPacketgsendEnterPacketevaluatesendObserveFnPacket isRootEventstartEventStreamendEventStream sendEventevents badEventsinitUniqgetUniqpeepUniquniq ourCatchAllIO handleExc$fGConstrainM1$fGConstrainM10$fGConstrainM11$fGConstrainU1$fGConstrain:*:$fGConstrain:+:$fMonadObserverM$fApplicativeObserverM$fFunctorObserverM $fShowParent$fGObservable:*:$fGObservable:+:$fGObservableU1$fGObservableM1$fGObservableM10$fGObservableM11$fObservableDynamic$fObservableSomeException$fObservableIO$fObservableArray$fObservableEither$fObservableMaybe$fObservable[]$fObservable(,,,,)$fObservable(,,,)$fObservable(,,)$fObservable(,)$fObservable()$fObservableChar$fObservableDouble$fObservableFloat$fObservableInteger$fObservableBool$fObservableInt$fObservable(->)$fGObservableK1$fGConstrainK1 $fShowEvent $fEqChange $fShowChange$fGenericChange $fEqParent$fGenericParent $fEqEvent$fGenericEventrunOprintOtestOCDS StmtDetailsStmtConStmtLamstmtCon stmtPretty stmtLamArgs stmtLamResCompStmt stmtLabelstmtIdentifier stmtDetailsstmtRes noNewlinesrenderCompStmts eventsToCDS$fNFDataStmtDetails$fShowCompStmt $fOrdCompStmt $fEqCompStmt$fNFDataCompStmt $fNFDataCDS$fGenericStmtDetails$fGenericCompStmt $fShowCDS$fEqCDS$fOrdCDS $fGenericCDS $fEqOutput $fOrdOutput $fShowOutput TraceInfo computations dependencies ConstantValueCVRootvalStmtvalLocvalMinvalMaxCompTreeVertex RootVertex vertexStmt vertexJmt getJudgement setJudgementisRightisWrong isUnassessed isAssistedisInconclusive isPassing vertexUID vertexRes isRootVertexleafsunjudgedCharacterCount replaceVertex mkCompTree traceInfo$fShowConstantValue $fEqVertex $fShowVertex $fOrdVertex$fGenericVertex$fEqConstantValue $fEqTopLvlFun$fShowTraceInfoParEqparEq UnevalHandlerRestrictedBottomBottomForallFromListJudgeAlternativeTreeModule moduleName searchPathPropositionType IOPropositionBoolPropositionLegacyQuickCheckPropositionQuickCheckProposition PropositionpropositionType propModulepropName signaturemaxSizetestgenTestGenTestGenQuickCheckTestGenLegacyQuickCheck SignatureArgumentSubjectFunctionRandomPropTypeSpecify PropertiesOf Propositions propositionspropTypefunName extraModules mkPropositionofType withSignaturesizeHint withTestGenjudgeconAp=== HoedOptionsverbose prettyWidth HoedAnalysis hoedTrace hoedCompTree VerbosityVerboseSilentdebugOrunOwith runOstorerunOwptestOwpprintOwp traceOnlydefaultHoedOptionsrunO'logOlogOwp $fObservableaobsdebugGHC.Base<$ Data.Functor<$> addConstraint FieldLimitNatZSVisitLocationTrunk ArgumentOfResultOfFieldOf InfixOrPrefixPrefixInfix EventForestelems mkEventForestparentUIDLookupparentPosLookupidVisit dfsChildrendfsFoldtreeUIDs eventsInTree topLevelApps noBufferingreadLine SpanZipperleftrightSpanList$fIsListSpanList$fIsListSpanZipperSpan ComputingPaused getSpanUID startSpan pauseSpan resumeSpanstopSpan runSpanTestsTestUIDVerbatimSZSZNil cursorUIDSpanConsSpanNilversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameDocsoftline softbreakhang<+>line<$$> linebreakhsepvsepfillSepsephcat<>vcatfillCatcatemptytextgroupnestalignprettyTextNilLine:<>GroupNestAlignfindFnOutputOutLabelOutDataCDSNamedCDSConsCDSFun CDSEntered CDSTerminated CDSString topLvlFun_ locations EventDetails TopLvlFun storeTree restoreTree storeTrace restoreTracestoreJudgementsrestoreJudgementsDBGParEqgParEq PropVarGenPropVarsPropRes DisproveByDisproveHoldWeakHoldError sourceFile buildFilesexeFileoutFileerrFile treeFilePath traceFilePathlookupPropositions lookupWithjudgeAlljudge'holds disproves disprovesBy simplestTreesimple2advicecommas errorMessagesisError unevalHandler unevalStateresOfevalPropositionsevalPropositionreEvalPropositioncleancompilerun generateCodegetEventFromMapeventMap mkPropResshorten backspacescompliftPV propVars0 propVarError propVarFresh propVarReturn propVarBind generatePrintgenerategenerateHeadinggenerateImport generateMain generateRes generateRes' generateArgs nothingOrArgnoArgareFunjustFuns isJustFungenerateFunMap generateCaseisArgisRes isJustRes hasParentPospvCatpvConcatmoreArgs generateExprgenConAp orNothingcatchEqcatchGEqselectVertices debugSessionStatecvtracecompTreepsCommandnameargsDesc commandDescparse TransitionDownUpNextSamekindStar