Add HCAR entry
[ghc-heap-view.git] / ghc-heap-view.tex
1 \documentclass[DIV16,twocolumn,10pt]{scrreprt}
2 \usepackage{paralist}
3 \usepackage{graphicx}
4 \usepackage[final]{hcar}
5
6 %include polycode.fmt
7
8 \begin{document}
9
10 \begin{hcarentry}{ghc-heap-view}
11 \report{Joachim Breitner}
12 \status{active development}
13 \makeheader
14
15 The library ghc-heap-view provides means to inspect the GHC's heap and analyze the actual layout of Haskell objects in memory. This allows you to investigate memory consumption, sharing and lazy evaluation.
16
17 This means that the actual layout of Haskell objects in memory can be analyzed.
18 You can investigate sharing as well as lazy evaluation using ghc-heap-view.
19
20 The package also provides the GHCi command \texttt{:printHeap}, which is similar to the debuggers' \texttt{:print} command but is able to show more closures and their sharing behaviour:
21
22 \begin{verbatim}
23 > let x = cycle [True, False]
24 > :printHeap x
25 _bco
26 > head x
27 True
28 > :printHeap x
29 let x1 = True : _thunk x1 [False]
30 in x1
31 > take 3 x
32 [True,False,True]
33 > :printHeap x
34 let x1 = True : False : x1
35 in x1
36 \end{verbatim}
37
38 The graphical tool ghc-vis~\cref{ghc-vis} builds on ghc-heap-view.
39
40 \FurtherReading
41   \begin{compactitem}
42     \item \url{http://www.joachim-breitner.de/blog/archives/548-ghc-heap-view-Complete-referential-opacity.html}
43     \item \url{http://www.joachim-breitner.de/blog/archives/580-GHCi-integration-for-GHC.HeapView.html}
44     \item \url{http://www.joachim-breitner.de/blog/archives/590-Evaluation-State-Assertions-in-Haskell.html}
45   \end{compactitem}
46 \end{hcarentry}
47
48 \end{document}
49 \r