   Load File: __puzzle.sml

   This module solves "criss-cross" puzzles -- puzzles in which a list of
   words must be fitted into a crossword grid.  It demonstrates the use of
   the CharVector and CharArray structures in the basis library.
 
   Three example puzzles are provided by the module: smallPuzzle,
   mediumPuzzle and largePuzzle.  Each example consists of a pair,
   the first element of which represents the pattern of blanks in the
   puzzle and the second of which is the list of words to be fitted 
   into it.  The function Puzzle.solve takes a puzzle and fits in the 
   words according to the pattern of blanks.

   For example:

      Puzzle.solve (Puzzle.smallPuzzle);

   gives 

      Solution:

      ZEBRA R
      E U P O
      A B PIT
      LABEL A
      OWL EAT
      TEE   E
      val it : unit = ()

