-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple trace-based debugger -- -- An easy to use debugger for viewing function calls and intermediate -- variables. To use, annotate the function under test, run the code, and -- view the generated web page. Full usage instructions are at -- Debug. @package debug @version 0.0.2 -- | Module for recording and manipulating debug traces. For most users, -- the TemplateHaskell helpers in Debug should be -- sufficient. module Debug.Record -- | Metadata about a function, used to drive the HTML view. data Function Function :: String -> String -> [String] -> String -> Function -- | Function name [funName] :: Function -> String -- | Function source, using n to break lines [funSource] :: Function -> String -- | Variables for the arguments to the function [funArguments] :: Function -> [String] -- | Variable for the result of the function [funResult] :: Function -> String -- | A single function call, used to attach additional information data Call -- | A version of fun allowing you to pass further information about -- the Function which is used when showing debug views. funInfo :: Show a => Function -> (Call -> a) -> a -- | Called under a lambda with a function name to provide a unique context -- for a particular call, e.g.: -- --
--   tracedAdd x y = fun "add" $ \t -> var t "x" x + var t "y" y
--   
-- -- This function involves giving identity to function calls, so is -- unsafe, and will only work under a lambda. fun :: Show a => String -> (Call -> a) -> a -- | Used in conjunction with fun to annotate variables. See -- fun for an example. var :: Show a => Call -> String -> a -> a -- | Clear all debug information. Useful when working in ghci to -- reset any previous debugging work and reduce the amount of output. debugClear :: IO () -- | Print information about the observed function calls to stdout, -- in a human-readable format. debugPrint :: IO () -- | Obtain information about observed functions in JSON format. The JSON -- format is not considered a stable part of the interface, more -- presented as a back door to allow exploration of alternative views. debugJSON :: IO String -- | Open a web browser showing information about observed functions. debugView :: IO () -- | Save information about observed functions to the specified file, in -- HTML format. debugSave :: FilePath -> IO () instance GHC.Show.Show Debug.Record.Function instance GHC.Classes.Ord Debug.Record.Function instance GHC.Classes.Eq Debug.Record.Function instance GHC.Show.Show a -- | Module for debugging Haskell programs. To use, take the functions that -- you are interested in debugging, e.g.: -- --
--   module QuickSort(quicksort) where
--   import Data.List
--   
--   quicksort :: Ord a => [a] -> [a]
--   quicksort [] = []
--   quicksort (x:xs) = quicksort lt ++ [x] ++ quicksort gt
--       where (lt, gt) = partition (<= x) xs
--   
-- -- Turn on the TemplateHaskell and ViewPatterns -- extensions, import Debug, indent your code and place it under a -- call to debug, e.g.: -- --
--   {-# LANGUAGE TemplateHaskell, ViewPatterns #-}
--   module QuickSort(quicksort) where
--   import Data.List
--   import Debug
--   
--   debug [d|
--      quicksort :: Ord a => [a] -> [a]
--      quicksort [] = []
--      quicksort (x:xs) = quicksort lt ++ [x] ++ quicksort gt
--          where (lt, gt) = partition (<= x) xs
--      |]
--   
-- -- We can now run our debugger with: -- --
--   $ ghci QuickSort.hs
--   GHCi, version 8.2.1: http://www.haskell.org/ghc/  :? for help
--   [1 of 1] Compiling QuickSort        ( QuickSort.hs, interpreted )
--   Ok, 1 module loaded.
--   *QuickSort> quicksort "haskell"
--   "aehklls"
--   *QuickSort> debugView
--   
-- -- The final call to debugView starts a web browser to view the -- recorded information. Alternatively call debugSave to write the -- web page to a known location. -- -- For more ways to view the result (e.g. producing JSON) or record -- traces (without using TemplateHaskell) see -- Debug.Record. module Debug -- | A TemplateHaskell wrapper to convert a normal function into a -- traced function. For an example see Debug. Inserts -- funInfo and var calls. debug :: Q [Dec] -> Q [Dec] -- | Open a web browser showing information about observed functions. debugView :: IO () -- | Save information about observed functions to the specified file, in -- HTML format. debugSave :: FilePath -> IO () -- | Print information about the observed function calls to stdout, -- in a human-readable format. debugPrint :: IO () -- | Clear all debug information. Useful when working in ghci to -- reset any previous debugging work and reduce the amount of output. debugClear :: IO ()