dF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE Safe FGHIJKLMNOPQRGMNOPQR FGHIJKLMNOPQRNone 01345>IKLNS $ 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 TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ S ~TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ S TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ S  NoneNone+      !"#         !"#None8$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[&\]^_`)*+,-./0123456789:;<=>?@ABCDEFGIY&$%&'()*+,-./0162345789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[None*1345KLSabcdefgh !"ijklmnopqrstuvwxyz{|}~#$Cabcdefgh !"ijklmnopqrstuvwxyz{|}~#$Babcdefgh !"ijklmnopqrstuvwxyz{|}~#$ None)%HLighweight algorithmic debugging based on observing intermediate values.Q(c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2015 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone %"run some code and return the Trace&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) '#Repeat and trace a failing testcase(Use property based judging.)#Repeat and trace a failing testcase* Short for  runO . print.+;Only produces a trace. Useful for performance measurements.,HTrace and write computation tree to file. Useful for regression testing.-)As logO, but with property-based judging. %&'()*+,-.  !"#$%&'()*+,-. &'*,()- !"#$+  % %&'()*+,- None 01345>IKLN=$ 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 ./01234567     89:;<=>?@ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ../0123456789:;<=>?@!"'),x./01234567     89:;<=>?@ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ< NonerKLMNOPQRSTUVWXYZ[A\]^_`abcdefghijklmnopqrstuvwxyz{|}~AabcdeflmnopqrsuxyRKLMNOPQRSTUVWXYZ[A\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None  bLighweight 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 experimentalPOSIXNoneBZrun some code and return the CDS structure (for when you want to write your own debugger).C Short for  runO . print.DThe 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) BCDE./0123456789:;<=>?@ABCDE=DC67>?./01E2345<:;@89BA BCDE  !!"#$%&'()*++,-./0123456789: ; < = >              ?  2739@ABCDEFGHIJKLMNOPOQQRSTUVWXYZ[[\]^_``abbcdefghijklmnopqrstuvwxyz{|}~      !"##$%&'()*+*,-./0123456789:;<=>?@ABCDEFGHIJKLMNOMNMNPMNQMNQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   e                       M N U V W X Y Z O P O [ [   ^ _ ` ` a Q Q   b b c e f g h  i j k l m    n o p q r s u v w { | }                         *  *                                                                                                                   7 !"Hoed_1dO5It9kwh4KkLPBj2nXrXDebug.Hoed.PureDebug.Hoed.Stk Paths_HoedDebug.Hoed.Pure.ObserveDebug.Hoed.Pure.EventForestDebug.Hoed.Pure.RenderDebug.Hoed.Pure.CompTreeDebug.Hoed.Pure.PropDebug.Hoed.Pure.DemoGUIDebug.Hoed.Stk.ObserveDebug.Hoed.Stk.RenderDebug.Hoed.Stk.DemoGUIbase GHC.GenericsGenericObserverO Observableobserver observeTempl observedTypes observeBase observeOpaquethunknothunk<<observe observeCCsendCDSParEq===Module moduleName searchPathPropositionTypeBoolPropositionQuickCheckProposition PropositionPropTypeSpecify PropertiesOf Propositions propositionspropTypefunName extraModules propVarError propVarFreshdebugOrunOtestOrunOwptestOwpprintO traceOnlylogOlogOwp Identifier UnknownId DependsJustOnInSequenceAfterobserve'catchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamegobserveUIDThreadIdThreadIdUnknownParent parentUIDparentPositionParentPositionChangeObserveConsEnterNoEnterFunEventeventUID eventParentchangeTrace TraceThreadIdDoNotTraceThreadId ObserverMrunMO Observing TypeOrPredTPTyVarMap 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$fApplicativeObserverM$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$fGObservableM11VisitLocationTrunk ArgumentOfResultOfFieldOf InfixOrPrefixInfixPrefix EventForestisRootelemsaddEvent mkEventForestparentUIDLookupparentPosLookupidVisit dfsChildrendfsFoldtreeUIDs eventsInTree topLevelApps appendApp$fShowLocationOutputOutLabelOutDataCDSSetCDSNamedCDSConsCDSFun CDSEntered CDSTerminatedCompStmt stmtLabelstmtIdentifierstmtRes noNewlines noNewlines'renderCompStmtsrenderCompStmtrenderNamedTop nubSorted eventsToCDSrender renderSet renderSet'renderFn renderNamedFnfindFnfindFn'rmEntry rmEntrySet simplifyCDSsimplifyCDSSet spotStringparen cdssToOutput cdsToOutputnilgrpbrksepsp$fShowCompStmtConsMapNestingSpan ComputingPaused TraceInfo topLvlFun locations computations storedStack dependencies ConstantValuevalStmtvalLocvalMinvalMaxCVRootCompTreeVertex RootVertex vertexStmt vertexJmt getJudgement setJudgementisRightisWrong isUnassessed isAssisted vertexUID vertexRes isRootVertexleafs mkCompTree insertCon getLocation setLocationseeFun getTopLvlFun cpyTopLvlFunshowCs getSpanUIDisSpanstartstoppauseresumeactiveComputations addDependency mkConsMap corToCons traceInfo $fShowSpan$fShowConstantValuelibgr_2MT7zeZgLpaKX7ieudB0TGData.Graph.Libgraph.CoreverticesarcsGraphGParEqgParEq PropVarGenPropVarsPropAppErrorHolds DisprovespropositionTypepropNameargMap propModule sourceFile buildFilesexeFileoutFileerrFilelookupPropositions lookupWithjudgejudgeWithPropositions hasResultholds disproves errorMessagesevalProposition backspacesjudge1' judge1_speccompliftPV propVars0 propVarReturn noAssumption propVarBind generatePrintgenerategenerateHeadinggenerateImport generateMain generateArgsmoreArgs generateExpr orNothingcatchEqcatchGEq $fParEqChar $fParEqDouble $fParEqFloat$fParEqInteger $fParEqBool $fParEqInt $fParEqMaybe $fParEq(,) $fParEq[] $fGParEqM1 $fGParEqM10 $fGParEqM11 $fGParEqK1 $fGParEqU1 $fGParEq:*: $fGParEq:+:MaxStringLength ShorterThan UnlimitedAdvance AdvanceToNext DoNotAdvanceguiMain activeTabotherTabtabstyleguiHelp guiObserve updateRegEx guiAssistedtestAll testCurrent unevalHandler guiAlgoDebugadvance guiExplorepreordershowStmt updateMenu selectVertex menuVerticeslookupCurrentVertexmarkNode replaceVertexshorten shorterThan60summarizeVertexvertexGraphvizLabel htmlEscape vertexImg updateStatus redrawWithredraw summarizeisCurrentVertexfaultyVerticesrunO' debugSessionportIdparent observeParent observePort CallStack emptyStackgetStack ccsToStringsDocNilTextLineDOCNIL:<>NESTTEXTLINESEPBREAK:<|> CompGraphRoot equationsstatusTreeBagbagStackbagStmtsequLabel equThreadId equIdentifier equDependsOnequResequStackhead' showWithStackbyStack compareStack nextStacknextStack_truncatecontainsbag+++mkBagsmkTreemkTreescmpStklookupstmts flattenStmtslaccexpandsplitpushDepspushArcspusherscallDepscallDepmkGraph renderTops renderTop commonOutputmkTextmkLinetoplen<>nesttextlinefoldflattenlayoutbestbebetterpretty $fEqVertex$fOrdBag$fEqBag $fEqCompStmtFilterShowAllShowSuccShowPred ShowMatchdemoGUI vertexFilteronClick newStatus onClickFilter showCompStmts updateTreecommas getStatusPushModeVanillaDropTruncatepushMode setPushMode getPushMode parseArgs stylesheet