-------------------------------------------------------- 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: [EMAIL PROTECTED]
