[Haskell-cafe] ANN: New version of graphmod (1.2.4)

Mateusz Kowalczyk fuuzetsu at fuuzetsu.co.uk
Sat Oct 4 07:34:55 UTC 2014


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.

[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 <fuuzetsu at fuuzetsu.co.uk>
> 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 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 at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
> 


-- 
Mateusz K.


More information about the Haskell-Cafe mailing list