# 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