Y_1      !"#$%&'()*+,-./0 None 01234=HJKM1 $ 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 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 1 *23456789:;<=>?@ABCDEF 23546789:;@?>=<ABCDEFGIHJKLMNPOQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 1  NoneNoneI      !"  3      !"None4#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV()*+,-./0123456789:;<=>?@CDT!#$%'&()*+,-./021345678<9:;=>?@ABCDEFGHIJKLMNOPQRSTUVNone(WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"WYXZ^]\[_`abcdefghijklmnopqrstuvwxyz{|}~NonebLighweight algorithmic debugging based on observing intermediate values and the cost centre stack.Q(c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2015 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone"run some code and return the TraceZrun some code and return the CDS structure (for when you want to write your own debugger).print a string, with debuggingThe 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)  Short for  runO . print.;Only produces a trace. Useful for performance measurements.     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  !"#$%&'(     )*+ !"#$%&'()*+,-1 !"#$%&'(  )*+ !"#$%&'(     )*+ !"#$%&'()*+,-$ Nonex./0123456789:;<=>,?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~,DEFGHIOPQRSTUVX\]syzX.10/2:9876543;=<>,CBA@?DEIFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ NonebLighweight 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 experimentalPOSIXNone-Zrun 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) -./0 !"#$%&'()*+,-./0%/.&')*+0$"#( !-,-./0  !"# $ % & '              (  ) * +  #,-../00123456789::;<=>?@?AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%$&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoopqrstuvwxyz{|}~ , - 4 5 6 7 8 9 . . / : :   = > ? @ ? 0 0   A A B C D E F 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 t u v w x y z { | } ~                         + +                                                                           I J K L M N O P \ ]  ^ ` a b c d e f g  h i j k l  m  n1 Hoed-0.3.0Debug.Hoed.PureDebug.Hoed.StkDebug.Hoed.Pure.ObserveDebug.Hoed.Pure.EventForestDebug.Hoed.Pure.RenderDebug.Hoed.Pure.CompTreeDebug.Hoed.Pure.DemoGUIDebug.Hoed.Pure.PropDebug.Hoed.Stk.ObserveDebug.Hoed.Stk.RenderDebug.Hoed.Stk.DemoGUIbase GHC.GenericsGenericObserverO Observableobserver observeTempl observedTypes observeBase observeOpaquethunknothunk<<observe observeCCsendCDSdebugOrunOprintO traceOnlydoitlogO IdentifierInSequenceAfter DependsJustOn UnknownIdobserve'*>>=>>==>>=*gobserveUIDThreadIdThreadIdUnknownParent parentUIDparentPositionParentPositionChangeFunNoEnterEnterConsObserveEventeventUID eventParentchangeTrace TraceThreadIdDoNotTraceThreadId ObserverMrunMO Observing TypeOrPredPTTyVarMap GObservable gdmobservergdmObserveChildrengdmShallowShowgdmFunObserver 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__unsafeWithUniqgenerateContextsendEnterPacketgsendEnterPacketsendNoEnterPacketevaluatesendObserveFnPacketroot isRootEventstartEventStreamendEventStream sendEventevents badEventssendSeminitUniqgetUniqpeepUniquniquniqSem ourCatchAllIO handleExc $fShowParent $fShowEvent$fMonadObserverM$fFunctorObserverM$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$fGObservableM11VisitArgOrResResArgLocationFieldOfResultOf ArgumentOfTrunk InfixOrPrefixPrefixInfix EventForestisRootelemsaddEvent mkEventForestparentUIDLookupparentPosLookupargOrResidVisit dfsChildrendfsFoldtreeUIDs eventsInTree topLevelApps appendApp$fShowLocationDocLineTextNilDOC:<|>BREAKSEPLINETEXTNEST:<>NILOutputOutDataOutLabelCDSSet CDSTerminated CDSEnteredCDSFunCDSConsCDSNamedCompStmt stmtLabelstmtIdentifierstmtReshead'sortOnsortOn'renderCompStmtsrenderCompStmtrenderNamedTop eventsToCDSrender renderSet renderSet'renderFn renderNamedFnfindFnfindFn' renderTops renderToprmEntry rmEntrySet simplifyCDSsimplifyCDSSet spotStringparensp commonOutput cdssToOutput cdsToOutputmkTextmkLinetoplennil<>nesttextlinesepbrkfoldgrpflattenlayoutbestbebetterpretty$fShowCompStmtConsMapNestingSpanPaused Computing TraceInfo topLvlFun locations computationsmessages storedStack dependencies ConstantValueCVRootvalStmtvalLocvalMinvalMaxCompTreeVertex vertexStmt vertexJmt RootVertex vertexUID isRootVertexleafs mkCompTree insertCon addMessage getMessage getLocation setLocationseeFun getTopLvlFun cpyTopLvlFunshowCs getSpanUIDisSpanstartstoppauseresumeactiveComputations addDependency mkConsMap corToCons traceInfo $fShowSpan$fShowConstantValueMaxStringLength Unlimited ShorterThanFilter ShowMatchShowPredShowSuccShowAllguiMain activeTabotherTabtabstyleguiHelpguiTraceeventRowgetStk guiObserve updateRegEx guiAlgoDebpreordershowStmt updateMenupos vertexFilteronClicklookupCurrentVertex selectVertex onClickFiltermarkNodeshorten noNewlinessummarizeVertex updateStatus updateTree redrawWithredrawisCurrentVertexfaultyVerticesProperty moduleName propertyName searchPath sourceFileexeFileoutFilejudge'judgegenerategenerateHeading generateMain generateArgs generateExpr__p1v1t1t2debugO'putStrOPushModeTruncateDropVanillarunO' hPutStrListpushMode setPushMode getPushMode parseArgs debugSessionportIdparent observeParent observePort CallStack emptyStackgetStack ccsToStrings CompGraph equationsstatusRootTreeBagbagStackbagStmtsequLabel equThreadId equIdentifier equDependsOnequResequStackrenderCallStack showWithStackbyStack compareStack nextStacknextStack_vanillanextStack_dropnextStack_truncatecontainscall commonPrefixspan2bag+++mkBagsmkTreemkTreescmpStklookupstmts flattenStmtslaccexpandsplitpushDepspushArcspusherscallDepscallDepmkGraph $fEqVertex$fOrdBag$fEqBag $fEqCompStmtdemoGUI showCompStmts summarizecommas stylesheet