Re: Type names vs type structure

The FX language supported structural equivalance of recursive types in
its early incarnations.  As I recall, the introduction of the module
system (which I designed) forced type recursions to go through opaque
bindings.  But certainly in FX-87 there was structural matching of
recursive descriptions.  In fact, the equivalance check was a standard
exercise in the graduate programming languages course (usually on the
first problem set).  

Here was the historical development: The earliest recursive types (and
the ones we made students implement) were like mu types: (rec
<type-name> <type-body>).  FX-87 supported mutually recursive
descriptions via something called DLETREC, like the Scheme LETREC
expression.  FX-91 used a module system that supported bindings for
values, transparent (structural) descriptions, and abstract
descriptions.  I believe that the trasparent descriptions could not be
recursive (except by referring to abstract/name bindings), but it was a
long time ago :>


  FX-87 Reference Manual.
  David K. Gifford, Pierre Jouvelot, John M. Lucassen, and Mark A. Sheldon.
  MIT Laboratory for Computer Science.
  MIT/LCS/TR-407. September 1987.

  Report on the FX-91 Programming Language.
  David K. Gifford, Pierre Jouvelot, Mark A. Sheldon, and James O'Toole.
  MIT Laboratory for Computer Science.  MIT/LCS/TR-531.  February 1992.