MetaML announcement

From: Zino Benaissa (benaissa@cse.ogi.edu)
Date: Mon Mar 06 2000 - 05:51:39 MET

  • Next message: Xavier Leroy: "Re: probleme de parsing ?"

    --------------------------------------------------------
     M M EEEEEEE TTTTTTTTT A M M L
     MM MM E T A A MM MM L
     M M M M E T A A M M M M L
     M M M M EEEEE T AAAAA M M M M L
     M M M E T A A M M M L
     M M M EEEEEEE T A A M M M LLLLLL
    --------------------------------------------------------

    The Pacific Software Research Center at the Oregon Graduate Institute
    is proud to announce the first public release of MetaML. For more
    information, and directions on how to download and install the system
    please refer to the webpage:
      http://www.cse.ogi.edu/PacSoft/projects/metaml/index.html

    MetaML is a meta-programming system designed to make the
    construction of meta-programs such as program generators safe and
    easy. In a meta-programming system meta-programs manipulate
    object-programs. Meta-programs may construct object-programs,
    combine object-program fragments into larger object-programs,
    observe the structure and other properties of object-programs, and
    execute object-programs to obtain their values.

    In addition to these operational properties, a meta-programming
    system should also have a good human-system interface. MetaML
    provides the following benefits:

    1) It is easy to construct code using pattern-based object-code
    templates. Templates look like the object language they represent.

    2) Program fragments are easy to combine into larger program
    fragments, this is accomplished by a parameterizable splicing
    mechanism analogous to a "template-with-holes".

    3) Object-code has a parametric type, i.e., there is code with type
    Int, code with type Float, etc. Type correctness of the
    meta-program, guarantees type correctness of the object-programs it
    constructs.

    4) Bound variables in templates are handled in a sophisticated way
    which guarantees no name clashes, and which obeys the rules of
    static scoping. Free variables in program templates refer to the
    value of the variable at the static location where the template is
    defined, not where it is eventually executed.

    5) Object-programs can be run. Generated code can be “tested” inside
    the meta-system.

    6) Object-programs can be printed. This is essential for debugging
    of meta-programs. The object-programs are pretty-printed in the
    manner in which they are normally written by a programmer.

    7) Object-programs have structure. It is possible to analyze
    object-programs, take them apart, etc.

    MetaML implements a number of extensions to Standard ML.
    These extensions are interesting in their own right. They
    are useful even if your not using the meta-programming
    features. They include:

    1) Locally polymorphic arguments to datatype constructors.
    2) Existentially quantifed arguments to datatype constructors.
    3) Higher order datatypes.
       Type constructors that take type constructors as parameters)
    4) Support for Monads. First class Monads,
       and Haskell-like Do notation.
    5) Extensible records.
    6) Anonymous, extensible sums.
    7) Polymorphic recursion.

    and many experimental features related to meta-programming.

    The MetaML team :) Zino Benaissa, Tim Sheard.

    ------------------------------------------------------------------
    Questions? Problems? Comments? Feedback? Contributions are welcome.
    send mail to: metaml@cse.ogi.edu



    This archive was generated by hypermail 2b29 : Mon Mar 06 2000 - 14:33:05 MET