ghc-vis-0.3.2: ghc-vis.cabal
name: ghc-vis
version: 0.3.2
license: BSD3
license-file: LICENSE
category: GHC, Debug, Development
cabal-version: >= 1.10
build-type: Custom
author: Dennis Felsing <dennis@felsin9.de>
maintainer: Dennis Felsing <dennis@felsin9.de>
homepage: http://felsin9.de/nnis/ghc-vis
copyright: Dennis Felsing 2012
synopsis: Live visualization of data structures in GHCi
description: Visualize live data structures in GHCi. Evaluation is not
forced and you can interact with the visualized data
structures. This allows seeing Haskell's lazy evaluation
and sharing in action.
.
To use this package add the accompanying @ghci@ file to
your @.ghci@ like this:
.
> echo ":script $HOME/.cabal/share/ghc-vis-0.3.2/ghci" >> ~/.ghci
.
Now you can run ghci and experiment with @ghc-vis@. Start
the visualization:
.
> $ ghci
> GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help
> > :vis
.
A blank window should appear now. This is the visualization
window. Add an expression to the visualization:
.
> > let a = [1..3]
> > :view a
> > let b = cycle a
> > :view b
> > :view "foo" ++ "bar"
.
<http://felsin9.de/nnis/ghc-vis/1.png>
.
Functions are red, named objects are green and links to an
already shown object are blue.
.
Notice how @a@ is referenced by @b@.
.
Evaluate an object that is shown in the visualization. You
can also click on the object to evaluate it.
.
> > :eval t1
.
<http://felsin9.de/nnis/ghc-vis/2.png>
.
The first element of @b@ has been evaluated. We see that
it's a reference to the value that's also referenced in a,
as they share the same name "t0".
.
Switch between the list view and the graph view:
.
> > :switch
.
<http://felsin9.de/nnis/ghc-vis/3.png>
.
When an object is updated by accessing it, you have to call
@:update@ to refresh the visualization window. You can also
click on an object to force an update:
.
> > a !! 2
> 3
> > :update
.
<http://felsin9.de/nnis/ghc-vis/4.png>
.
Clear the visualization window, this also happens when you
@:load@ or @:reload@ a source file:
.
> > :clear
tested-with: GHC == 7.4.1, GHC == 7.4.2
data-files: ghci
Extra-source-files: nonghci-test.hs
flag graph
Default: True
Description: "Enable graph view using Graphviz"
Library
Exposed-modules: GHC.Vis
Other-modules: GHC.Vis.Internal GHC.Vis.Types GHC.Vis.View.List GHC.Vis.View.Common
Default-Language: Haskell2010
Build-depends: base == 4.*,
mtl >= 2.0,
fgl,
deepseq,
text,
transformers,
gtk == 0.12.*,
cairo == 0.12.*,
ghc-heap-view >= 0.3.0.2
Hs-source-dirs: src/
Ghc-options: -Wall -fno-warn-unused-do-bind
if flag(graph)
Other-modules: GHC.Vis.View.Graph.Parser GHC.Vis.View.Graph
Build-depends: graphviz >= 2999.14.1.0,
xdot >= 0.2
Cpp-options: -DGRAPH_VIEW
--source-repository head
-- type: darcs
-- location: http://