
If you wanted to go down that route, try using 'ghc --make -v2' and translate that dependency graph to dot.
Also, if you want to get a quick 'n dirty list of which of your own files depend on which others, "ghc -M $main.hs" works quite well. I've had some success in the past shoving this stuff almost directly into the graph libraries and out to graphviz. Be warned that it fiddles with any file called Makefile in your working directory...
You can redirect the output of -M, but since it appears that you cannot combine --make with -fno-code, the incantation you want is probably something like: ghc -M -v2 -optdep-f -optdep depend Main.hs which gives you dependency output in two forms, a module-based one to stdout (-v2), a file-based one to file depend (-M -f depend): $ ghc -M -v2 -optdep-f -optdep depend TestGMap.lhs Glasgow Haskell Compiler, Version 6.9.20080514, for Haskell 98, stage 2 booted by GHC version 6.6.1 Using package config file: C:\ghc\ghc-6.9.20080514\package.conf wired-in package ghc-prim mapped to ghc-prim-0.1 wired-in package integer mapped to integer-0.1 wired-in package base mapped to base-3.0 wired-in package rts mapped to rts-1.0 wired-in package haskell98 mapped to haskell98-1.0.1 wired-in package template-haskell mapped to template-haskell-2.2 wired-in package ndp not found. Created temporary directory: C:\DOCUME~1\cr3\LOCALS~1\Temp\/ghc1564_0 *** Chasing dependencies: Chasing modules from: TestGMap.lhs *** Literate pre-processor: Module dependencies [NONREC ModSummary { ms_hs_date = Tue Jun 24 19:25:08 GMT Daylight Time 2008 ms_mod = main:BinTreeDatatype, ms_imps = [Data.Generics] ms_srcimps = [] }, NONREC ModSummary { ms_hs_date = Tue Jun 24 19:35:32 GMT Daylight Time 2008 ms_mod = main:GMap, ms_imps = [Unsafe.Coerce, Data.Generics, BinTreeDatatype] ms_srcimps = [] }, NONREC ModSummary { ms_hs_date = Tue Jun 24 19:24:46 GMT Daylight Time 2008 ms_mod = main:Main, ms_imps = [GMap, BinTreeDatatype] ms_srcimps = [] }] *** Installing new makefile: *** Deleting temp files: *** Deleting temp dirs: $ cat depend # DO NOT DELETE: Beginning of Haskell dependencies BinTreeDatatype.o : BinTreeDatatype.hs GMap.o : GMap.hs GMap.o : BinTreeDatatype.hi TestGMap.o : TestGMap.lhs TestGMap.o : GMap.hi TestGMap.o : BinTreeDatatype.hi # DO NOT DELETE: End of Haskell dependencies Claus http://www.haskell.org/ghc/docs/latest/html/users_guide/separate-compilation...