Hat Logo

Libraries in Hat


Standard Libraries

Currently, Hat fully supports the Standard Prelude and official Haskell'98 libraries, defined in the Haskell '98 Library Report:

Extension Libraries

Hat also supports some of the extension libraries supplied with more recent versions of GHC, nhc98, and Hugs. These are the hierarchical libraries mainly in the base package. Actually only a subset of the base, parsec, and mtl packages is currently available in Hat, but it includes most of the really useful and common extensions, such as the FFI libraries, IORefs, and unsafePerformIO. A full list is below.
supported unsupported
Control.Arrow
Control.Monad
Control.Monad.Cont
Control.Monad.Error
Control.Monad.Fix
Control.Monad.Identity
Control.Monad.List
Control.Monad.Reader
Control.Monad.RWS
Control.Monad.State
Control.Monad.Trans
Control.Monad.Writer
Control.Concurrent
Control.Concurrent.*
Control.Exception
Control.Exception.*
Control.Monad.ST
Control.Parallel
Control.Parallel.*
Data.Array
Data.Bits
Data.Bool
Data.Char
Data.Complex
Data.Either
Data.FiniteMap
Data.IORef
Data.Ix
Data.List
Data.Maybe
Data.Monoid
Data.PackedString
Data.Ratio
Data.Set
Data.Tuple
Data.Word
Data.Array.*
Data.Int
Data.Generics
Data.Dynamic
Data.STRef
Data.STRef.*
Data.Unique
Data.Word
Debug.Trace Debug.QuickCheck
Debug.QuickCheck.*
Foreign.ForeignPtr
Foreign.Marshal.Error
Foreign.Ptr
Foreign.StablePtr
Foreign.Storable
Foreign.C
Foreign.C.Error
Foreign.C.String
Foreign.C.Types
Foreign.C.TypesISO
Foreign.Marshal.Alloc
Foreign.Marshal.Array
Foreign.Marshal.Utils
Foreign.Marshal.Pool
System.CPUTime
System.Console.GetOpt
System.Cmd
System.Directory
System.Environment
System.Exit
System.IO
System.IO.Error
System.IO.Unsafe
System.Locale
System.Random
System.Time
System.Info
System.Mem
System.Mem.StableName
System.Mem.Weak
System.Posix.Signals
System.Posix.Types
Text.ParserCombinators.Parsec
Text.ParserCombinators.Parsec.Error
Text.ParserCombinators.Parsec.Char
Text.ParserCombinators.Parsec.Combinator
Text.ParserCombinators.Parsec.Expr
Text.ParserCombinators.Parsec.Perm
Text.ParserCombinators.Parsec.Pos
Text.ParserCombinators.Parsec.Prim
Text.PrettyPrint
Text.PrettyPrint.HughesPJ
Text.Read
Text.Show
Text.Html
Text.Html.BlockTable
Text.ParserCombinators.Parsec.Language
Text.ParserCombinators.Parsec.Token
Text.ParserCombinators.ReadP
Text.ParserCombinators.ReadPrec
Text.Read.Lex
Text.Regex
Text.Regex.Posix
Text.Show.Functions

Your Own Libraries

If you wish to trace a program that uses some libraries, then at the moment you need to copy the source for that library into the same source tree as your program, and explicitly compile it for tracing along with the program. Obviously this requires that the library itself is implemented exclusively in the superset of Haskell'98 supported by Hat. If you trust that the library is correct and do not wish to trace its internal calls, then you can give the flag -trusted to hat-trans (for that library alone).

Future improvements

We have ideas for the future whereby a library can be used in its original form without needing re-compilation for tracing. We sometimes refer to this idea as wrapping a library, as opposed to the current method of lifting the library source code by transformation. However, for the moment library-wrapping remains a dream.


The latest updates to these pages are available on the WWW from http://www.haskell.org/hat/
http://www.cs.york.ac.uk/fp/hat/

This page last updated: 27th July 2004
York Functional Programming Group