=-M     None 01234=HJKM$ 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).8 can also observe functions as well a structural values.Functions 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:;<=>?@AB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvwxyz{|}~1 !"#$%&'()*./01:@B "! #%$&'()*+-,./0123456879:;<=>?@AB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvwxyz{|}~ Nonev     V     None !"#$%&'()*+,-./0123456789 !"#$%&'()*+,-./0123456789#"! $%&'()*+,-./0123456789bLighweight algorithmic debugging based on observing intermediate values and the cost centre stack.Q(c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2014 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNoneZrun some code and return the CDS structure (for when you want to write your own debugger). Short for  runO . print.:print a string, with debugging The 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) ;<=>:?@ABCDEF    ;>=<:?@ABCDEFG      !"#$%&'()**+,,-./0102234556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF Hoed-0.2.0 Debug.HoedDebug.Hoed.ObserveDebug.Hoed.RenderDebug.Hoed.DemoGUIbase GHC.GenericsGeneric IdentifierInSequenceAfter DependsJustOn UnknownIdObserverO Observableobserver observeTempl observedTypes observeBase observeOpaquethunknothunk<<observe observeCCobserve'send*>>=>>==>>=*CDSdebugOprintOrunOlogOgobserveChangeFunNoEnterEnterConsObserveThreadIdThreadIdUnknownEventportIdparentchange TraceThreadIdDoNotTraceThreadIdParent observeParent observePort ObserverMrunMO Observing TypeOrPredPTTyVarMap CallStack GObservable gdmobservergdmObserveChildrengdmShallowShowgdmFunObserver emptyStackgetStack ccsToStrings genClassDef className methodName headToUpper gobserverBasegobserverBaseClause gobserverList gobservergobserverClausesgobserverClause listClauses listClause1 listClause2gobservableInstance updateContextgobservableBaseInstancegobservableListInstancegobserverFunClause gobserverFun gfunObserver shallowShow isObservable isObservable' isObservableT isObservablePthunkObservableobserveChildrengmapM compositionM lookupBinding getBindings getPBindings getPBindings'getTvbsgetBsgetBs'getNamegetName'getTvsgetConstructorsguniqueVariables observableCxtclasspObservableqcontObservablecontObservableqtvnametvnamegthunkgdMapM observer_ gdmobserver_ observer__rootunsafeWithUniqgenerateContextsendEnterPacketgsendEnterPacketsendNoEnterPacketevaluatesendObserveFnPacketstartEventStreamendEventStream sendEventevents badEventssendSeminitUniqgetUniqpeepUniquniquniqSem ourCatchAllIO handleExc$fMonadObserverM$fObservableDynamic$fObservableSomeException$fObservableIO$fObservableArray$fObservableEither$fObservableMaybe$fObservable[]$fObservable(,,,,)$fObservable(,,,)$fObservable(,,)$fObservable(,)$fObservable()$fObservableChar$fObservableDouble$fObservableFloat$fObservableInteger$fObservableBool$fObservableInt$fObservable(->)$fGObservableK1$fGObservable:+:$fGObservable:*:$fGObservableU1$fGObservableM1$fGObservableM10$fGObservableM11DocLineTextNilDOC:<|>BREAKSEPLINETEXTNEST:<>NILOutputOutDataOutLabelCDSSet CDSTerminated CDSEnteredCDSFunCDSConsCDSNamed CompGraphVertex equationsstatusRootTreeBagbagStackbagStmtsCompStmtequLabel equThreadId equIdentifier equDependsOnequResequStackhead'renderCompStmtsrenderCompStmtrenderNamedToprenderCallStack showWithStackbyStack compareStack nextStacknextStack_vanillanextStack_dropnextStack_truncatecontainscall commonPrefixspan2bag+++mkBagsmkTreemkTreescmpStklookupstmts flattenStmtslaccexpandsplitisRootpushDepspushArcspusherscallDepscallDepmkGraph eventsToCDSrender renderSet renderSet'renderFn renderNamedFnfindFnfindFn' renderTops renderToprmEntry rmEntrySet simplifyCDSsimplifyCDSSet spotStringparensp commonOutput cdssToOutput cdsToOutputmkTextmkLinetoplennil<>nesttextlinesepbrkfoldgrpflattenlayoutbestbebetterpretty$fOrdBag$fEqBag$fShowCompStmtMaxStringLength Unlimited ShorterThanFilter ShowMatchShowPredShowSuccShowAllpreordershowStmtdemoGUI updateMenu vertexFilteronClicklookupCurrentVertex selectVertex onClickFiltermarkNodeshorten noNewlines showCompStmtssummarizeVertex updateStatus updateTree redrawWithredraw summarizeisCurrentVertexcommasfaultyVerticesputStrOPushModeTruncateDropVanillarunO' hPutStrListpushMode setPushMode getPushMode parseArgs debugSession stylesheet