[Haskell] ANNOUNCE: LocH, source locations in error, trace, and exceptions

Donald Bruce Stewart dons at cse.unsw.edu.au
Tue Nov 14 21:09:48 EST 2006


The topic of improving exception diagnosis in Haskell is hot at the
moment, and I'm pleased to announce the release of LocH, a small Haskell
module providing source location-specific error messages and debugging
strings for Haskell code. 

It uses the compiler-expanded 'assert' token, rather than cpp or m4, to
provide a lightweight approach to generating source locations. No
preprocessor is required. The code is available under a BSD license.

The LocH home:
    http://www.cse.unsw.edu.au/~dons/loch.html

The API:
    http://www.cse.unsw.edu.au/~dons/loch/Debug-Trace-Location.html

Example usage:

    import Debug.Trace.Location

    main =
        trace assert "Starting ..." $ do
        print 1
        trace assert "Finished" $ do
        print 2
        let x = check assert $ head ([] :: [Int])
        print x

Will produce:

    $ ./a.out 
    A.hs:4:10-15: Starting ...
    1
    A.hs:6:10-15: Finished
    2
    a.out: A.hs:8:18-23: Prelude.head: empty list

LocH provides located versions of trace, failure, as well as check and checkIO
to wrap exception-throwing pure and IO code.

May all your exceptions be located,
    Don


More information about the Haskell mailing list