
Hello, Yeah, I've seen the crushes on large graphs too---looks like a bug in graphviz, perhaps we should report it. I have some code for laying out graphs using a force based algorithm, but graphiz does quite a lot (e.g., supports many different formats), so I don't have any immediate plans to write a render. My next task for `graphmod` is to implement `Cabal` support, so that you could easily visualize a package. Cheers, -Iavor On Sat, Oct 4, 2014 at 1:04 AM, Ivan Lazar Miljenovic < ivan.miljenovic@gmail.com> wrote:
On 4 October 2014 17:34, Mateusz Kowalczyk
wrote: On 10/04/2014 01:33 AM, Iavor Diatchki wrote:
Hello,
Good idea! I made a little web-page with examples and screenshots. Have a look:
https://github.com/yav/graphmod/wiki
Indeed, mutually-recursive modules are not a problem. There is an example of some mutually-recursive modules in the screen-shot from GHC's type-checker.
By the way, I also added some support for modules that contains CPP, and improved the layout of the graphs a bit, so the current version is 1.2.5.
Cheers, -Iavor
That helped a lot. I packaged graphmod (and xdot) on NixOS. It graphviz kept segfaulting[2] on the file produced for Yi repository but in the end it worked after I added ‘-p’ to graphmod. Also --no-cluster view at [3].
Is there any plan for graphmod to do rendering itself, such as to PNG? I also wonder if there's any way to highlight cyclic paths, useful when trying to get rid of boot files.
To do self-rendering, you would need to have a haskell implementation of a graph layout algorithm, and then a way to do the rendering (which could admittedly be done with digrams).
[1]: http://fuuzetsu.co.uk/images/1412407628.png [2]: libpath/shortest.c:324: triangulation failed libpath/shortest.c:192: source point not in any triangle Error: in routesplines, Pshortestpath failed out of memory [3]: http://fuuzetsu.co.uk/images/1412407805.png
On Fri, Oct 3, 2014 at 12:43 PM, Mateusz Kowalczyk <
wrote:
On 10/03/2014 07:37 PM, Iavor Diatchki wrote:
Hello,
I am pleased to announce a new version of `graphmod`---a program that helps you visualize the import dependencies between the modules in your Haskell programs.
The new feature in version 1.2.4 is support for pruning the dependency graph, which is enabled with the flag -p or --prune-edges. When
fuuzetsu@fuuzetsu.co.uk> this
option is selected, `graphmod` will ignore imports to modules that are already imported by some of the dependencies of the module.
For example, consider the following modules:
module A where { import B; import C } module B where { import C } module C where { }
When generated with `--prune-edges`, the resulting graph will be:
A -> B -> C
Note that there is no edge from `A` to `C`, because `C` is already imported by `B`.
Happy hacking, -Iavor
Hi,
It'd be great if the project page showed an example use and the generated graph.
Does it work with possibly mutually-importing boot files?
-- Mateusz K. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Mateusz K. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe