The Functional Graph Library for Haskell
Originally by Martin Erwig, this library provides an inductive approach to dealing with graphs.
For more information, please read the documentation on Hackage.
The original website contains various papers that might help learning and understanding the approach taken by this library; however, the code might no longer match the actual implementation.
Arbitrary instances
If you wish to use fgl graphs with QuickCheck, have a look at the fgl-arbitrary package.
Original Credit attribution
From Martin Erwig's original README
I am grateful to many people who have helped me with bug reports, questions, comments, and implementations to improve the FGL. In particular, I would like to thank Martin Boehme, Luis Zeron, and Hal Daume for their contributions. Moreover, I would like to thank Abe Egnor and Isaac Jones at Aetion Technologies who refactored the modules into the new hierarchical name space and who have added two modules (see also the file CHANGES).