[A bunch of new documentation for Hat 2.00. malcolm**20020613084736] { addfile ./docs/config.html addfile ./docs/copyright.html addfile ./docs/download.html addfile ./docs/install.html addfile ./docs/libraries.html addfile ./docs/publications.html addfile ./docs/requirements.html addfile ./docs/status.html hunk ./docs/config.html 1 +Configuring hat + +
+ +
+ Hat Logo
+

Configuring hat

+
+
+ +

+The automatic configuration and installation utility, called +configure, should always be used to prepare for building and +installing hat. Unlike many configuration utilities, this +one can be run safely at any time to change any options - it will never +leave your system in an inconsistent state. + +

+You can choose your own configuration options, +but the default behaviour is to prepare to build the components of +hat under the +targets directory, and to install those components under +/usr/local, in the subdirectories bin (for scripts), +lib/hat (for executables and libraries), +include/hat (for Hat interface files), and +man/man1 for man pages. + +

+Your machine/operating-system is detected and used during building +and installation to ensure that object files and executables from +different architectures do not interfere with each other. We search +for an existing installation of a Haskell compiler, and hmake, +and configure the build system to use them. We also guess which +compiler you will use to build hat - in order of preference: +ghc, then nhc98. + +

+configure has many options to override the default build and +installation behaviours. The options fall into three categories, but +they may appear in any order on the command-line. The first group of +options controls what task configure will do. You can only +choose one of these - if you choose more than one, only the final one +will take effect. The other two groups of options are cached and +re-used in later invocations of configure, but you can always +override them on the current commandline. + +

+
-h
+
--help
+
Give a brief explanation of all the options. Do not save any + configuration settings.
+ +
-v
+
--version
+
Report package versions. Do not save any configuration settings.
+ +
--config
+
Set and report configuration options. [This is the default behaviour + if no other option from the first group is chosen.]
+ +
--install
+
Install selected components now (scripts, executables, libraries, + interface files, man pages, html documents etc.). This option + should not normally be used - use make install instead. + However for information, it copies the selected components to their + final directory locations (you must have permission to write into + those directories). Don't forget, if you have previously + run configure with any options set, the previous + settings will be cached and used for this install - but you can + override them now on the commandline if you wish.
+ +
+ + +

+The second and third group of options control the configuration process +and are entirely orthogonal to each other. The second group configures +some general settings. + +

+ +
--buildwith=comp
+
Build hat using the named compiler (to override + the config script's guess). Possible values are ghc + or nhc98.
+ +
--buildopts=opts
+
Give opts to the build compiler (for instance, to + force ghc to do optimisation you might add -O). +
+ +
--builddir=dir
+
Use the given base directory for intermediate object files instead of + the default ./targets. This is useful if you have disk + quotas and need to put object files on a separate temporary disk.
+ +
--installdir=rootdir
+
--prefix=rootdir
+
Use the given directory as the installation root instead of the + default /usr/local.
+ +
--bindir=dir
+
Use the given directory for installing scripts instead of the + default directory, bin under the installation + root.
+ +
--libdir=dir
+
Use the given directory for installing executables and libraries + instead of the default directory, lib/hat under the + installation root.
+ +
--incdir=dir
+
Use the given directory for installing interface and include files + instead of the default directory, include/hat under the + installation root.
+ +
--mandir=dir
+
Use the given directory for installing manual pages + instead of the default directory, man/man1 under the + installation root.
+ +
--docdir=dir
+
Use the given directory for installing the html documentation + instead of the default directory, /usr/doc/hat.
+ +
+ + +

+Finally, the third group of options allows you to select which +components of the package you wish to install. They can be useful when +installing the same software for many architectures on a heterogeneous +network, if you don't want to continually re-install shared components +such as man pages. As another example, you may want to update just the +scripts from a new beta release, without re-installing the executables. + +

+
[+/-]lib
+
Do (or don't) install the executables and library files (default is +).
+
[+/-]inc
+
Do (or don't) install the include and interface files (default is +).
+
[+/-]bin
+
Do (or don't) install the scripts (default is +).
+
[+/-]man
+
Do (or don't) install the man pages (default is +).
+
[+/-]docs
+
Do (or don't) install the html documents (default is -).
+
+ + +
+

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

+This page last modified: 2002.06.11
+ +York Functional Programming Group
+ +

+ + hunk ./docs/copyright.html 1 +Hat copyright + +
+ +
+ Hat +

Hat copyright information

+
+
+ +

+Development of the Hat tracing system was mainly funded by the UK's +Engineering and Physical Sciences Research Council, grant number +EPSRC GR/M81953. The University of York, RWTH Aachen, and Microsoft +Research (Cambridge) also contributed. + +

+The source code of the hat-trans program is copyright © +Olaf Chitil and Malcolm Wallace, 2000-2002. Part of this tool is +based on the front end of the nhc98 compiler, and those parts +are copyright © Niklas Röjemo, 1991-1998. Parts are also +based on earlier work on tracing transformations, copyright © +Jan Sparud and Colin Runciman, 1996-1997. + +

+The hat-observe, hat-detect, and hat-trail +browsing tools are copyright © Malcolm Wallace and Olaf Chitil, +2001-2002. The hat-observe and hat-detect browsing +tools are based on earlier tools of the same name, copyright © +Thorsten Brehm, 2001. + +

+The hat-stack tool is copyright +© Malcolm Wallace, 2001-2002. + +

+The hat-check tool is copyright +© Colin Runciman and Malcolm Wallace, 2001-2002. + + +

+
+

LICENCE

+
+

+It is the intention that this software be "freely available" in the Gnu +(http://www.gnu.org/) +and Open Source +(http://www.opensource.org/) +traditions. +The following is a brief statement of the rights and restrictions +attached to this software distribution. It is a preliminary licence; we +may modify the terms and conditions at a later date. Any successor to +this licence may, when published, be applied to this software as an +alternative to the current terms, if you wish. + +

+If you are not sure about any of the terms of this licence, +please contact us to discuss your requirements. (Primary contact: +Malcolm.Wallace@cs.york.ac.uk) + +

+You may use, re-distribute, and modify this software, but you must not +alter or remove these copyright notices. You may add your own +additional copyright notices for any modifications to this software that +you distribute. (Any modifications must be provided - at least - in +source form, must be described in the documentation, and you must +clearly indicate that the software has been modified, for instance by +changing the name of the executable or its version number, or by some +other method.) + +

+You must not restrict anyone else's rights to use, re-distribute or +modify this software. Distributions of standard or modified versions of +this software must retain this licence (or its successor). + +

+In addition, you are explicitly granted the right to re-use parts of this +software in the creation of new software, without having to place the +new software under this or any other licence, provided that: +

    +
  • the new software does not have the same name as this software, but +
  • you clearly acknowledge which code you have re-used from this software, +
  • you retain the relevant copyright notices, and +
  • you indicate to users where they can freely obtain a standard version of + this software. +
+ +

+Programs, object files, and intermediate files produced as output by +this software do not fall under this copyright statement and are not +governed by the terms of this licence. You are free to use them (or +restrict their use) as you like. + +

+UNLESS OTHERWISE STATED IN WRITING, THIS SOFTWARE IS SUPPLIED "AS IS" +AND WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING WITHOUT +LIMITATION THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A +PARTICULAR PURPOSE. NEITHER THE AUTHORS, COPYRIGHT HOLDERS, NOR ANY +OTHER PARTY WHO REDISTRIBUTES THIS SOFTWARE SHALL BE LIABLE FOR DAMAGES, +HOWSOEVER CAUSED, ARISING OUT OF THE USE OF THIS SOFTWARE. USE AT YOUR +OWN RISK. + +


+

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

+2002.06.11
+ +York Functional Programming Group
+ +

+ + hunk ./docs/download.html 1 +Hat download page + +
+ +
+ Hat Logo
+

Hat download page

+
+ +
+ +

+Please note that, beginning with version 2.00, Hat is no longer +distributed as part of the nhc98 compiler, but is completely +independent. + +

+The latest stable release of Hat is 2.00, available in various +distribution formats (listed below). Important patches for the +stable version are also provided. The development tree is at +version 2.01 and is only available by CVS. +Bugfixes and important changes to the system are described in the release notes for each version. + +

+Don't forget to read the system requirements, +first, and then the installation instructions. + +

+


+ +

Distribution packages

+ +

+

+ + + + + + + + + + + +
package machineversion date size
+ Sources (.tar.gz)any2.002002-06-11500kb
+
+ +

+Alternative locations: +
+Tarfiles and RPMs:
+ +ftp://ftp.cs.york.ac.uk/pub/haskell/hat/ + +http://www.cs.york.ac.uk/fp/hat/hat-2.00.tar.gz +
+ +


+ +

+

+Known to compile for at least the following machine/OS combinations:
+ + + + + + + + + + + + +
ix86Linux, NetBSD, FreeBSD, OpenBSD
ppcLinux
sparcsolaris2, SunOS4
mipsIRIX5, Ultrix-4.5, [NOT IRIX6]
power3AIX
pmaxNetBSD
+
+ +

+ +

+All the documents available on the web are included in the source package. +(* Please note that options/instructions for out-of-date packages +may differ slightly from the ones on the web. Always follow the +instructions from the package itself.) + +

+The installation instructions should +be comprehensive, but if you have any problems, please mail +hat@haskell.org. +(You do not need to be a member of the list to post to it.) + +


+

Patches

+
+ + + + + + + + + + +
patch name patch todate fixes what problem?
-hat v2.002002-06-11There are no patches yet for Hat 2.00 +
+
+ + +

+ + +
+

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

+This page last modified: 2002-06-11
+ +York Functional Programming Group
+ +

+ + hunk ./docs/faq.html 5 + Hat Logo
hunk ./docs/faq.html 12 -

Why do you call it a tracer rather than a debugger?

+

Why do you call Hat a tracer rather than a debugger?

hunk ./docs/faq.html 47 -Currently a traced program runs about 50 times slower than its -untraced counterpart. We are working on reducing this factor. -As a rule of thumb, a reduction step produces about 40 bytes in the -trace file. So trace files can easily grow to tens and hundreds -of megabytes. However, you can name some modules of your program -as trusted, so that their reductions are not recorded in -the trace. +Currently a traced program runs between 50-200 times slower than +its untraced counterpart, depending which compiler and options you +use. We are working on reducing this factor. As a rule of thumb, +a reduction step produces about 50 bytes in the trace file. So trace +files can easily grow to tens and hundreds of megabytes. However, +you can name some modules of your program as trusted, so +that their reductions are not recorded in the trace. hunk ./docs/faq.html 58 -Hat nearly (but not yet fully) covers the complete Haskell 98 language -and its libraries. It also supports only a few language extensions. -Check the Hat Feature Summary to -see exactly which parts of the language are missing, and when you -can expect them to be added. +Hat covers the complete Haskell 98 language and its libraries, or at +least that is the intention. It only supports a very few language +extensions, such as the FFI. First make sure that your program is +fully Haskell'98, and if it still won't compile, report it as a bug +in Hat. [ Check the Hat Feature +Summary to see exactly which parts of the language are missing, +and when you can expect them to be added. ] hunk ./docs/faq.html 67 -

Even on a very simple program, the tracing compiler complains - about dPat: no match.

- -

-This not-very-informative message actually means you have used an -(n+k) pattern in a definition. The tracing compiler doesn't -yet handle (n+k) patterns correctly. We hope to fix this soon, -but in the meantime you will have to rewrite your program by hand -to avoid this construct. - hunk ./docs/faq.html 74 -This page last modified: 21 May 2001
+This page last modified: 11 June 2002
hunk ./docs/feature-table.html 20 -Haskell'98
vs. HatActualPlanned - -20002002 +Haskell'98
vs. HatActual (2.00)Planned hunk ./docs/feature-table.html 23 -


+
hunk ./docs/feature-table.html 25 -Language constructs +Language constructs hunk ./docs/feature-table.html 27 -modules*** +modules** hunk ./docs/feature-table.html 29 -lambda abstractions*** +lambda abstractions** hunk ./docs/feature-table.html 31 -pattern matches*** +pattern matches** hunk ./docs/feature-table.html 33 -guards*** +guards** hunk ./docs/feature-table.html 35 -if-then-else*** +if-then-else** hunk ./docs/feature-table.html 37 -case expr of*** +case expr of** hunk ./docs/feature-table.html 39 -list comprehensions++* +list comprehensions+* hunk ./docs/feature-table.html 41 -monadic do++* +monadic do+* hunk ./docs/feature-table.html 43 -infix operators*** +infix operators** hunk ./docs/feature-table.html 45 -numeric literals+** +numeric literals** hunk ./docs/feature-table.html 47 -numeric sequences++* +numeric sequences+* hunk ./docs/feature-table.html 49 -n+k patterns--- +n+k patterns** hunk ./docs/feature-table.html 52 -Basic types +Basic types hunk ./docs/feature-table.html 54 -Bool*** +Bool** hunk ./docs/feature-table.html 56 -Char*** +Char** hunk ./docs/feature-table.html 58 -List*** +List** hunk ./docs/feature-table.html 60 -Tuples*** +Tuples** hunk ./docs/feature-table.html 62 -Int*** +Int** hunk ./docs/feature-table.html 64 -Integer-** +Integer** hunk ./docs/feature-table.html 66 -Float-** +Float** hunk ./docs/feature-table.html 68 -Double-** +Double** hunk ./docs/feature-table.html 70 -Rational-** +Rational** hunk ./docs/feature-table.html 73 -User types +User types hunk ./docs/feature-table.html 75 -data types*** +data types** hunk ./docs/feature-table.html 77 -type synonyms+** +type synonyms** hunk ./docs/feature-table.html 79 -newtypes-** +newtypes** hunk ./docs/feature-table.html 81 -named fields-+* +named fields+* hunk ./docs/feature-table.html 83 -type classes*** +type classes** hunk ./docs/feature-table.html 85 -derived instances-** +derived instances** hunk ./docs/feature-table.html 87 -strict types-+* +strict types** hunk ./docs/feature-table.html 96 -Haskell'98
vs. HatActualPlanned - -20002002 +Haskell'98
vs. HatActual (2.00)Planned hunk ./docs/feature-table.html 99 -
+
hunk ./docs/feature-table.html 101 -Input/output +Input/output hunk ./docs/feature-table.html 103 -single I/O streams*** +single I/O streams** hunk ./docs/feature-table.html 105 -file handling-+* +file handling+* hunk ./docs/feature-table.html 108 -Libraries +Libraries hunk ./docs/feature-table.html 110 -Prelude+** +Prelude** hunk ./docs/feature-table.html 112 -Ratio-** +Ratio** hunk ./docs/feature-table.html 114 -Complex-** +Complex** hunk ./docs/feature-table.html 116 -Numeric-** +Numeric** hunk ./docs/feature-table.html 118 -Ix-** +Ix** hunk ./docs/feature-table.html 120 -Array-** +Array** hunk ./docs/feature-table.html 122 -List+** +List** hunk ./docs/feature-table.html 124 -Maybe+** +Maybe** hunk ./docs/feature-table.html 126 -Char+** +Char** hunk ./docs/feature-table.html 128 -Monad-** +Monad** hunk ./docs/feature-table.html 130 -IO-+* +IO** hunk ./docs/feature-table.html 132 -Directory-+* +Directory** hunk ./docs/feature-table.html 134 -System-** +System** hunk ./docs/feature-table.html 136 -Time--* +Time** hunk ./docs/feature-table.html 138 -Locale--* +Locale** hunk ./docs/feature-table.html 140 -CPUTime-** +CPUTime** hunk ./docs/feature-table.html 142 -Random-** +Random** hunk ./docs/feature-table.html 145 -Platform Portability +Platform Portability + +machine and O/S** hunk ./docs/feature-table.html 149 -machine and O/S*** +nhc98** hunk ./docs/feature-table.html 151 -other Haskell systems-+* +ghc** hunk ./docs/feature-table.html 154 -Non-Haskell'98 Extensions +Non-Haskell'98 Extensions hunk ./docs/feature-table.html 156 -primitive FFI-** +primitive FFI** hunk ./docs/feature-table.html 158 -IOExtras library-** +IOExtras library-* hunk ./docs/feature-table.html 160 -multi-parameter TCs--- +multi-parameter TCs-* hunk ./docs/feature-table.html 162 -existentials--- +existentials-- hunk ./docs/feature-table.html 164 -concurrency--- +concurrency-- hunk ./docs/feature-table.html 166 -parallelism--- +parallelism-- hunk ./docs/hatuser.tex 652 -Using the symbol $\leftarrow$ to represent the relationship ``is the +Using the symbol $\rightarrow$ to represent the relationship ``is the hunk ./docs/hatuser.tex 657 -\texttt{last' []} $\leftarrow$ the error message\\ -\texttt{last' (\_:[])} $\leftarrow$ \texttt{last' []}\\ -\texttt{last' (\_:\_:[])} $\leftarrow$ \texttt{last' (\_:[])}\\ -\texttt{last' (8:\_:\_:[])} $\leftarrow$ \texttt{last' (\_:\_:[])}\\ -\texttt{main} $\leftarrow$ \texttt{last' (8:\_:\_:[])}\\ -\texttt{4*2} $\leftarrow$ \texttt{8}\\ -\texttt{xs} $\leftarrow$ \texttt{4*2}\\ +\texttt{last' []} $\rightarrow$ the error message\\ +\texttt{last' (\_:[])} $\rightarrow$ \texttt{last' []}\\ +\texttt{last' (\_:\_:[])} $\rightarrow$ \texttt{last' (\_:[])}\\ +\texttt{last' (8:\_:\_:[])} $\rightarrow$ \texttt{last' (\_:\_:[])}\\ +\texttt{main} $\rightarrow$ \texttt{last' (8:\_:\_:[])}\\ +\texttt{4*2} $\rightarrow$ \texttt{8}\\ +\texttt{xs} $\rightarrow$ \texttt{4*2}\\ hunk ./docs/index.html 3 - -Hat - The Haskell Tracer - - - +Hat - the Haskell Tracer + hunk ./docs/index.html 8 -Hat Logo

Hat - The Haskell Tracer

+ Hat Logo +

Hat - the Haskell Tracer

hunk ./docs/index.html 11 +
hunk ./docs/index.html 13 -

Table of Contents

-What is Hat?
-How can I view a trace?
-Tutorials and Documentation
-Current Release
-Development
-Mailing Lists
-Publications
+ +
+

+

about
+ +
+
What is Hat?
+
How do I view a trace?
+
Compliance with Haskell 98
+
Known bugs
+
Libraries supported by Hat
+
Frequently asked questions
+
Copyright and licence information
+
+
hunk ./docs/index.html 29 +
hunk ./docs/index.html 31 +

+

download/build/install
+ +
+
+ Version 2.00 released 1xth June 2002.
+
Download Hat
+
System requirements
+
Build and install instructions
+
Configuration options
+
Recent changes
+
+
hunk ./docs/index.html 45 - -

What is Hat?

+
hunk ./docs/index.html 47 -Hat is a source-level tracer for Haskell. It is a tool that gives -the user access to otherwise invisible information about a computation. +

+

user guides
+ +
+
A simple tutorial introduction:
+    + (HTML) + (TeX) + (PostScript) + (PDF) +
+
A more advanced tutorial:
+    + (not yet available) +
+
The Hat user manual:
+    + (HTML) + (TeX) + (PostScript) + (PDF) +
+
Reference Guide (hat-trans)
+
Reference Guide (browsers)
+
+
hunk ./docs/index.html 74 -

What is it good for?

+
hunk ./docs/index.html 76 -Hat helps locating errors in programs. Furthermore, it is useful for -understanding how a (correct) program works, especially for teaching -and program maintenance. Hat is not a time or space profiler. +

+

development
+ +
+
Technical publications
+
Known bugs
+
Wish list
+
Anonymous CVS repository
+
+
hunk ./docs/index.html 87 -

How does it work?

+
hunk ./docs/index.html 89 -Tracing a program with Hat consists of two phases: First the specially -compiled program runs as normal, except that additionally a trace is -written to file. Second, after the program has terminated, the trace -is viewed with a tool. +

+

community
+ +
+
+ Mailing list for everything Hat-related
+
+ More general Haskell mailing lists
+
+ Other Haskell systems and resources
+
+
+ +
+ +
+ +

+If you have any problems, please send a message to the +mailing list at hat@haskell.org. + +


+ + +

What is Hat?

+

+Hat is a source-level tracer for +Haskell 98, the +standard lazy functional programming language. Hat is a tool that +gives the user access to otherwise invisible information about a +computation. + +

+

+Note, Hat is now portable: it works with both ghc and +nhc98 +
hunk ./docs/index.html 127 +

What is it good for?

hunk ./docs/index.html 129 +Hat helps locating errors in programs. Furthermore, it is useful for +understanding how a (correct) program works, especially for teaching +and program maintenance. Hat is not a time or space profiler. hunk ./docs/index.html 136 +

How does it work?

hunk ./docs/index.html 138 - The trace consists of high-level information about the computation. It - describes each reduction, that is, the replacements of an instance - of a left-hand side of an equation by an instance of its right-hand - side, and the relation of the reduction to other reductions. +Tracing a program with Hat consists of two phases: First the specially +compiled program runs as normal, except that additionally a trace is +written to file. Second, after the program has terminated, the trace +is viewed with a browsing tool. +The trace consists of high-level information about the computation. It +describes each reduction, that is, the replacements of an instance +of a left-hand side of an equation by an instance of its right-hand +side, and the relation of the reduction to other reductions. +Because the trace describes the whole computation, it is huge. Hat +comes with several tools to selectively view the fragments of the trace +that are of interest. Each tool shows fragments of the computation +in a particular way, highlighting a specific aspect. hunk ./docs/index.html 169 -
  • Hat-observe (inspired by Hood)
    +
  • Hat-observe (inspired by Hood)
    hunk ./docs/index.html 197 - hat-observe 1.12 (:h for help, :q to quit) + hat-observe 2.00 (:h for help, :q to quit) hunk ./docs/index.html 247 - hunk ./docs/index.html 258 -
  • Hat-detect (inspired by Freja)
    +
  • Hat-detect (inspired by Freja)
    hunk ./docs/index.html 274 - hat-detect 1.12 (:h for help, :q to quit) + hat-detect 2.0x (:h for help, :q to quit) hunk ./docs/index.html 319 - -

    Tutorials and Documentation

    - - - - - -

    Current Release

    - -Hat 1.12 is part of the Haskell system nhc98. So you get Hat by -downloading nhc98. hunk ./docs/index.html 320 - - -Please mail bug reports to nhc-bugs@haskell.org. - - - -

    Development

    - - -

    The ART project

    - -ART (Advanced Redex Trails) is an EPSRC project (started 1st March -2000) to develop a tracer/debugger for Haskell programs. -Hat is developed within the ART project. - -The ART project team has the following active members: -Colin Runciman, -Malcolm Wallace, -Olaf Chitil, -Thorsten Brehm and -Phil Hassall. - -ART builds on previous work by Colin and -Jan Sparud. - -

    Plans for Future Releases

    - -The ART project proposal describes well -our main aims. Note that details have changed and will continue to change. - -Aims for the near future are: - - -

    Support Hat!

    - -

    -You can help us to make Hat a valuable tool for all programmers. Give us -feedback! Starting with bug reports you can tell us what you consider -as Hat's major deficiencies and which improvements would benefit you -most. Thus you may influence our priorities and contribute new ideas. - -

    -We are especially looking for medium sized programs (300-3000 lines) -for testing and evaluating Hat. Please -contact us if you want to -contribute a program. - - - -

    Mailing lists

    - -Because Hat is currently part of nhc98, the nhc mailing lists are the forum for discussing Hat. - -To join mailing lists, go to the -haskell.org mailing list -manager. - - - -

    Publications

    - - - -The ART project is the successor of an earlier project and builds on its work which is described in the following publications: - +The latest updates to these pages are available on the WWW from + +http://www.cs.york.ac.uk/fp/hat/ hunk ./docs/index.html 327 -
    -This page last modified: 13 March 2002
    +This page last modified: 2002.06.11
    hunk ./docs/index.html 330 - + + hunk ./docs/index.html 333 - hunk ./docs/install.html 1 +Building/installing hat + +
    + +
    + Hat Logo
    +

    Building/installing hat

    +
    + +
    +

    The Brief Version

    +

    +If you are in a hurry to get started, here's the brief version of the +install procedure: +

    +    $ ./configure  [ --prefix=/usr/local ]
    +    $ make
    +    [ perhaps become root ]
    +    $ make install
    +
    + +

    System Requirements

    + +

    Download it

    +

    +The current distribution packages can be found at +

    +    http://www.cs.york.ac.uk/fp/hat/download.html
    +
    +Using tar and gunzip, unpack your chosen package, and +cd to the base directory (called hat-x.x, where the x's are the +version number). Note that all the documentation available on the web +is also included in the package, although the web versions will of course +be more up-to-date. Your local copy of the release notes is +in status.html. + +

    Configuration

    +

    +An automatic configuration utility is supplied, called +configure. The configure script searches your system +for Haskell compilers and sets up some scripts and options before +you build. In brief, the default behaviour is to build under +targets in the current directory, and to install various +components under /usr/local, in the subdirectories +bin, lib/hat, include/hat, and +man/man1. Some components will also be installed eventually +in the system directories for ghc or nhc98, whichever compiler is +available. Nothing is actually installed at configuration time, +only at installation time The config script has several useful +options to override the default build and installation behaviours. +Use the --help option for brief details, and see the page +about configuration options for full details. + + +

    Building and installing from sources

    +

    +All object files are created in a separate directory tree from the +sources (targets/$MACHINE/obj). This means in theory it is possible +to build concurrently for different machines from the same shared +source tree. + +

    +Run ./configure with any options you +require. (You should supply installation directory options at this +stage.) This will attempt to detect any existing Haskell compilers and +guess which one to build hat with. If you have more than one +available, we will choose, in order of preference, ghc, then +nhc98. You cannot currently build or use hat with hbc. + +

    +Then just run make to build all the components. (The target +make help gives a list of individual targets, if you really +want to build components individually.) + +

    +The time taken to build Hat depends on your machine and which compiler +you are using. Here are some sample build times in minutes: + +

    + + + + + + + + + + + + + + + + + + + + + +
    time (mins)
    build
    compiler
    Solaris
    sparcIIi (270MHz)
    Linux
    ppc (300Mhz)
    Linux
    i686 (500Mhz)
    Linux
    i686 (1Ghz)
    ghc41xx13xx
    nhc9843xx19xx
    +
    + +

    +Finally, when you have built all the components you require, type +make install to copy the components to their final location. +(You may need to become root for this step, depending on the final +location you selected at configure time. You must certainly have +permission to write package files into the system directories of the +compiler that was found at configuration time.) + +

    Problems?

    +

    +Ok, so now you should have all the components of hat. If you +have any problems, mail +hat@haskell.org with a description (and a bugfix if you +have one!). + +

    Keeping up-to-date

    +

    +If you use hat regularly, or if you would like to +use hat but for some reason cannot, please join the hat mailing list for discussion of features, +bugfixes, and so on. + +


    +

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

    +This page last modified: 2002.06.11
    + +York Functional Programming Group
    + +

    + + hunk ./docs/libraries.html 1 +Libraries in Hat + +
    + +
    + Hat Logo
    +

    Libraries in Hat

    +
    +
    + +

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

    +No other extension libraries (such as those in the GHC hslibs +collection) are yet supported by default, in particular, neither +the commonly used IOExts nor Foreign. + +

    +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 in pure Haskell'98. 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). + +

    +We have ideas for the future whereby a library can be used in its +original form without needing re-compilation for tracing, but for +the moment that remains a dream. However, we do plan to support +at least some of the hslibs library collection explicitly (by +transforming them) within the hierarchical module namespace that +will soon ship with both ghc and nhc98. + +


    +

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

    +2002.06.11
    + +York Functional Programming Group
    + +

    + + hunk ./docs/maillist.html 1 -nhc98 mailing list +Hat mailing list hunk ./docs/maillist.html 5 -

    ART mailing list

    +
    + Hat Logo
    +

    Hat mailing list

    +
    hunk ./docs/maillist.html 14 - The ART-list is for researchers and users interested in the - Advanced Redex Trails (ART) project, whose aim is to develop a - fully-fledged tracer/debugger for Haskell programs. - -

    - The list is initially envisaged as a means of contacting people who - are willing to take part in experiments as beta testers of the - tracer. However, it is also available both for discussion of - tracing of functional computations in general, and for discussion - of the features of our tracer in particular. The list is moderated. - -

    -(If the list grows in traffic sufficiently to warrant it, we may at a -later date split it into two, with one list for low-traffic -announcements, the other for unmoderated free-for-all discussion.) - + The Hat@haskell.org mailing list is for all users, + potential users, and developers of the Hat Haskell + Tracing system. Please use it for sending bug reports, bug fixes, + and wishes, and also for discussion of tracing of functional + computations in general, as well as the features of the Hat tracer + in particular. hunk ./docs/maillist.html 23 -To join the list, send a message with the subject - -subscribe - -to the address: ART-list-request@cs.york.ac.uk. To leave the list, -send the message +To join or leave the list, or to search its archives, visit hunk ./docs/maillist.html 25 -unsubscribe + + http://haskell.org/mailman/listinfo/hat hunk ./docs/maillist.html 28 -to the same address. hunk ./docs/maillist.html 33 - ART-list@cs.york.ac.uk - - -

    List archive

    -

    -A web archive of messages from the list is here: - - http://www.cs.york.ac.uk/fp/ART/ART-list-archive/ + hat@haskell.org hunk ./docs/maillist.html 35 +You do not need to be a member of the list to post to it. hunk ./docs/maillist.html 42 - -http://www.cs.york.ac.uk/fp/ART/ + +http://www.cs.york.ac.uk/fp/hat/ hunk ./docs/maillist.html 46 -2000.03.02
    +2002.06.11
    hunk ./docs/publications.html 1 + + + +Hat publications + + + + +

    +Hat Logo

    Hat publications

    +
    + + + +Hat is the successor of an earlier project and builds on its work +which is described in the following publications: + + +

    +


    +This page last modified: 11 June 2002
    + +York Functional Programming Group
    + + + hunk ./docs/requirements.html 1 +Hat system requirements + +
    + +
    + Hat Logo
    +

    Hat system requirements

    +
    + +
    +

    You will need...

    +

    +To build and use Hat, you will need GNU make, a Haskell'98 compiler +that supports the standard FFI, and hmake. Here are the +minimum versions of compilers that we recommend: anything earlier +than these is unlikely to interoperate correctly with Hat. + +

    + + + + + +
    compilerminimum version
    ghc5.00
    nhc981.14
    hmake3.05
    +
    + +

    +You only need one Haskell compiler - the Hat installation procedure +will detect what you already have and use it. However, it is +absolutely essential that you have hmake. Not only is it +needed to build the various Hat tools, but you will also need it when +you want to build tracing versions of your own programs. + +

    +You must also have a Unix-like operating system environment with +X windows, and in particular the xterm terminal emulator +supporting ANSI colour codes. This is used when you start one +browsing tool from within another, to bring up a new text window. +Unfortunately, we don't know what the equivalent would be in a +Windows environment, so for the moment, Windows is not supported. +(We don't know about MacOS X either, but it might be rather easier +to find a replacement for xterm there.) + +

    GHC requirements

    +

    +If you have ghc, then a package is built, containing +various Hat libraries. The installation procedure attempts to +install the new `hat' package in the system directories that belong +to ghc. You must have the appropriate permissions to write +into those directories, and sufficient permissions to update the +system-wide ghc package configuration. (The installation +and configuration is performed automatically.) + +

    nhc98 requirements

    +

    +If you have nhc98, then a package is built, containing +various Hat libraries. The installation procedure attempts to +install the new `hat' package in the system directories that belong +to nhc98. You must have the appropriate permissions to write +into those directories. (The installation is performed automatically.) + +


    +

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

    +This page last modified: 2002.06.11
    + +York Functional Programming Group
    + +

    + + hunk ./docs/status.html 1 +Hat status + +
    + +
    + Hat Logo
    +

    Hat status

    +
    + +
    + +

    +The latest stable release is 2.00. The CVS development tree is now +at version 2.01. Bugfixes and important changes to the system are +described here for the two most recent released versions. + +

    + +


    +

    Hat 2.00 (2002-06-1x) features

    +
      +
    • The first version released separately from nhc98. It uses + a different file format to store the trace, and the browsing + tools have been completely rewritten to improve performance, + integration, and correctness. +
    + + +
    + +

    Status of various components

    + +

    +The basic components of hat are: +

      +
    • hat-trans, the program transformer. +
    • hat-lib, the runtime library that is linked to a transformed program. +
    • hat-observe, a browser driven by expression patterns. +
    • hat-trail, a browser driven by backward exploration. +
    • hat-detect, a browser implementing algorithmic debugging. (NOT INCLUDED) +
    • hat-stack, a browser showing a back-trace from an error. +
    • hat-view, a source-code viewer. +
    • hat-check, to verify the integrity of a .hat file. +
    + +
    +

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

    +This page last modified: 2002.05.11
    + +York Functional Programming Group
    + +

    + + hunk ./docs/tutorial1.tex 20 -This first version of the tutorial assumes nhc98 (Version 1.12), hmake -(Version 3.02) and Linux. +This first version of the tutorial assumes hat (Version 2.00), nhc98 +(Version 1.14), hmake (Version 3.05) and Linux, but it works equally +well with ghc instead of nhc98. hunk ./docs/tutorial1.tex 61 -compiled with the {\tt -T} option. The {\tt -T} flag is interpreted -suitably by {\tt hmake}: +compiled with the {\tt -hat} option to {\tt hmake}: hunk ./docs/tutorial1.tex 64 -{\tt \$ hmake -T Insort} \\ -{\tt nhc98 -T -c -o Insort.T.o Insort.hs} \\ -{\tt nhc98 -T -o Insort Insort.T.o} +{\tt \$ hmake -hat Insort} \\ +{\tt hat-trans Insort.hs} \\ +{\tt Wrote TInsort.hs} \\ +{\tt nhc98 -package hat -c -o TInsort.o TInsort.hs} \\ +{\tt nhc98 -package hat -o Insort TInsort.o} hunk ./docs/tutorial1.tex 388 -{\tt \$ hmake -T BadInsort} \\ +{\tt \$ hmake -hat BadInsort} \\ }