Hello, I'm pleased to announce the relase of ghc-vis. This package provides a way to visualize live data structures in GHCi, similar to GHCi's :print and vacuum-cairo. Evaluation is not forced and you can interact with the visualized data structures. This allows seeing Haskell's lazy evaluation and sharing in action. Hopefully it will be useful for teaching Haskell and understanding and debugging data structures. Currently there's a linear view and a graph view using GraphViz. If you want to see some examples of how it looks head to http://felsin9.de/nnis/ghc-vis/ or just give it a try like this: $ cabal install ghc-vis $ echo ":script $HOME/.cabal/share/ghc-vis-0.2.1/ghci" >> ~/.ghci $ ghci GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help λ> :vis λ> let a = [1..3] λ> :view a λ> let b = cycle a λ> :view b λ> :view "foo" ++ "bar" λ> :eval t1 λ> :switch On Hackage: http://hackage.haskell.org/package/ghc-vis I'm happy to hear about bugs, feature requests and other thoughts. Dennis
On 1 September 2012 17:27, Dennis Felsing
Hello,
I'm pleased to announce the relase of ghc-vis. This package provides a way to visualize live data structures in GHCi, similar to GHCi's :print and vacuum-cairo. Evaluation is not forced and you can interact with the visualized data structures. This allows seeing Haskell's lazy evaluation and sharing in action. Hopefully it will be useful for teaching Haskell and understanding and debugging data structures.
Currently there's a linear view and a graph view using GraphViz. If you want to see some examples of how it looks head to
http://felsin9.de/nnis/ghc-vis/
or just give it a try like this:
$ cabal install ghc-vis $ echo ":script $HOME/.cabal/share/ghc-vis-0.2.1/ghci" >> ~/.ghci $ ghci GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help λ> :vis λ> let a = [1..3] λ> :view a λ> let b = cycle a λ> :view b λ> :view "foo" ++ "bar" λ> :eval t1 λ> :switch
On Hackage: http://hackage.haskell.org/package/ghc-vis
I'm happy to hear about bugs, feature requests and other thoughts.
Dennis
In terms of your usage of graphviz, I have a couple of suggestions (as it's maintainer ;-) on how you can improve your code: * As of graphviz-2999.14.1.0, I've introduced isGraphvizInstalled and quitWithoutGraphviz to try and prevent closed pipe errors when you try to call dot when it isn't installed * I suggest you use either hGetDot or hGetStrict from Data.GraphViz.Commands.IO rather than hGetContents in your GHC.Vis.Graph.dg function (maybe -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
Sent from my BlackBerry® wireless device
-----Original Message-----
From: Ivan Lazar Miljenovic
Hello,
I'm pleased to announce the relase of ghc-vis. This package provides a way to visualize live data structures in GHCi, similar to GHCi's :print and vacuum-cairo. Evaluation is not forced and you can interact with the visualized data structures. This allows seeing Haskell's lazy evaluation and sharing in action. Hopefully it will be useful for teaching Haskell and understanding and debugging data structures.
Currently there's a linear view and a graph view using GraphViz. If you want to see some examples of how it looks head to
http://felsin9.de/nnis/ghc-vis/
or just give it a try like this:
$ cabal install ghc-vis $ echo ":script $HOME/.cabal/share/ghc-vis-0.2.1/ghci" >> ~/.ghci $ ghci GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help λ> :vis λ> let a = [1..3] λ> :view a λ> let b = cycle a λ> :view b λ> :view "foo" ++ "bar" λ> :eval t1 λ> :switch
On Hackage: http://hackage.haskell.org/package/ghc-vis
I'm happy to hear about bugs, feature requests and other thoughts.
Dennis
In terms of your usage of graphviz, I have a couple of suggestions (as it's maintainer ;-) on how you can improve your code: * As of graphviz-2999.14.1.0, I've introduced isGraphvizInstalled and quitWithoutGraphviz to try and prevent closed pipe errors when you try to call dot when it isn't installed * I suggest you use either hGetDot or hGetStrict from Data.GraphViz.Commands.IO rather than hGetContents in your GHC.Vis.Graph.dg function (maybe -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
participants (3)
-
Dennis Felsing -
ian.knopke@gmail.com -
Ivan Lazar Miljenovic