ForML Version 0.6 
25 January 1993 
(updated to SML'96 by fp@cs.cmu.edu, 8 March 1997)

What is ForML
-------------

ForML = "Formatter for ML" is a prettyprinting module written in SML that
can help you produce neatly formatted output from data structures like
the abstract syntax trees of some language.

  The formatting primitives are straightforward and easy to use. This version
of ForML supports monospaced ASCII text only. Contact the author at 
er@cs.cmu.edu if you desire supoort of proportionally spaced output such as
TeX or PostScript.

  ForML does NOT provide for the automatic generation of unparsers from
grammars or datatype declarations.


How to get ForML
----------------

 * You should have received ForML as part of the SML/NJ distribution.

Otherwise:

 * ftp a.cs.cmu.edu
 * Name: anonymous
 * Password: your_name@your_node
 * cd /afs/cs/user/er/pub      (Note: no intermediate pathnames are permitted!)
 * binary
 * get ForML06.tar.Z           (size ca. 65k) 
 * bye
 Now cd to where you want to use ForML, and issue the commands:
    uncompress ForML0.6.tar.Z
    tar -vxf ForML0.6.tar
 The latter will create a directory ForML0.6 and put ForML's files there.
 

Getting Started
---------------

  Manual:  ./Doc/pretty.tex (LaTeX source)
           ./Doc/pretty.dvi (Dvi file)

  Incorporating ForML into SML programs:
    see load.sml, which contains the following commands:
        use "formatter.sig";         (* defines signature FORMATTER *)
        use "formatter.fun";         (* defines functor Formatter : FORMATTER *)
        structure Formatter : FORMATTER = Formatter ();

  Examples:
    The examples from the manual can be found in
        ./Doc/pretty.sml
    You can juse ``use'' this file after you have loaded the formatter.

  If you are familiar with CAML:
    The formatting primitives are similar to the boxes used in CAML
    (chapter 11 in the CAML manual).

Source Code:
------------

   The ForML source is self documenting.
   A Dvi-version of the source is in
       ./Doc/program.dvi

   Or run the following to turn the source code in . into LaTeX input:
     -- change to ./Doc
     -- run       program2tex
     -- now run   latex program

   The following conventions are used in the source files:
     -- lines consisting only of '(*' or '*)' start and terminate LaTeX text,
        i.e. this text is fed straight into LaTeX
     -- the first line in every source file contains only '(*'
     -- the last line in the source file is not '*)'
     -- everything that is not LaTeX text is processed in the verbatim
        environment

Contact
-------

Please direct all questions, comments, suggestions, or criticism to:

      er@cs.cmu.edu     (Ekkehard Rohwedder)
