MLISP2(ID:3303/mli005)


Second version of MLISP, Stanford, Enea, 1972

"MLISP2 is a high-level programming language based on LISP.
Features:
1. The notation of MLISP,
2. Extensibility - the ability to extend the language and to define new languages,
3. Pattern matching - the abiiity to match input against context free or sensitive patterns,
4. Backtracking-- the ability to set decision points, manipulate contexts and backtrack."

Places
Related languages
MLISP => MLISP2   Evolution of
MLISP2 => LISP70   Evolution of

References:
  • Canfield, D. C., and Enea, H. J. "Backtracking in MLISP2" view details
          in Proceedings of the Third International Joint Conference on Artificial Intelligence IJCAI-73, Stanford, CA: Stanford University 1973 view details
  • Sammet, Jean E. "Roster of Programming Languages for 1973" p147 view details
          in ACM Computing Reviews 15(04) April 1974 view details
  • Smith, David Canfield and Enea, Horace J. "MLISP2" Report Number: CS-TR-73-356 Stanford University, Department of Computer Science May 1973 view details Abstract: Report Number: CS-TR-73-356
    Institution: Stanford University, Department of Computer Science
    Title: MLISP2.
    Author: Smith, David Canfield
    Author: Enea, Horace J.
    Date: May 1973
    Abstract: MLISP2 is a high-level programming language based on LISP. Features: 1. The notation of MLISP. 2. Extensibility---the ability to extend the language and to define new languages. 3. Pattern matching---the ability to match input against context free or sensitive patterns. 4. Backtracking--the ability to set decision points, manipulate contexts and backtrack. pdf Extract: Introduction
    Introduction
    MLISP2 is a high-level, LISP-based programming language recently
    developed at the Stanford Artificial Intelligence Project. The
    language has been operational for: two years, and the development at
    phase of it has been completed. This is a final report on the
    1anguage.

    MLISP2 is specially tailored for writing translators for other
    languages. To this end, two powerful control structures have been
    added to an ordinary LISP base: pattern matching and back tracking.
    This report serves the dual purpose of explaining our particular
    version and use of these control structures, as well as serving as a
    users? manual for anyone wanting to write MLISP2 programs,
    Actually, MLISP2 is a transitional language. Laurence Tesler
    and the authors are presently implementing a language called LISP70
    which will include and (for most applications) supersede MLISP2,
    MLISP and LISP. Therefore, perhaps it is worthwhile to briefly
    justify the current report, Many of the concepts developed in MLISP2
    are being used in LISP70, though some of them are undergoing
    extensive revisions. But more importantly, MLISP2 is an extremely
    effective translator-writing system. It clearly isolates some
    general principles that may profitably b e incorporated in other
    systems. This report concentrates on the nature of these principles,
    how they are implemented, and how they are most effectively used,
    Since this report emphasizes the research aspects of MLISP2, the
    users' manual aspect necessarilly is somewhat incomplete. This report
    is not a complete description of the MLISP2 language. Rather it is a
    supplement to the MLISP users? manual, and it only discusses in
    depth the differences (mainly additions) between MLISP2 and MLISP.
    Extract: History
    History
    MLISP2 is the latest in a continuing development processing programming languages. The progression, capabilities, is:

    LISP -> MLISP -> MLISP2 -> (LISP70)

    Where LISP70 has not been completed at the time of this writing.

    MLISP is a programming language based on LISP. MLISP programs are translated to LISP and then executed or compiled to LAP.

    The advantage of MLISP over LISP is primarily notational: the MLISP notation makes it easier to write and understand LISP programs. In addition, certain list-processing deficiencies in LISP are remedied (see the MLISP manual). MLISP2 is an extension of MLISP, originally created for the following reasons:
    1. To make the syntax of MLISP more easily modifiable.
    2. To provide a vehicle for easily implementing compilers for other languages.
    3. To add backtracking as a control structure, making MLISP a more useful language for heuristic problems.

    The MLISP2 and MLISP languages are separate and have separate capabilities. Since MLISP is simply a more convenient notation for LISP, it is suitable for exactly the same tasks as LISP. MLISP2 preserves the list-processing capabilities of LISP, but it has a substantially modified and augmented environment tailored for efficient backtracking and pattern matching, This extra overhead is unnecessary for simple list-processing tasks.

    MLISP2 is mostly upwardly compatible with MLISP; MLISP2 differences are mainly in the form of additions to MLISP. We classify the differences between MLISP2 and MLISP as either ?major? or ?minor.? The major changes modify the control structure or execution environment of MLISP: they substantially alter its capabilities. For example, the SELECT expression (backtracking) and the LET expression (extensibility) are major changes. The minor changes are modifications to MLISP, hopefully in the form of improvements, which do not substantially alter its capabilities but which make it more convenient to use. For example, the DOT notation and the RECOMPILE expression are minor changes.

    The main productions needed to understand the MLISP2 language are PROGRAM, EXPRESSION, PRIMARY, SIMPEX and BASIC. The main production needed to understand the extensibility mechanism in the language is LET. The main production needed to understand the backtracking facility is SELECT.
          in ACM Computing Reviews 15(04) April 1974 view details
  • Sammet, Jean E "Roster of programming languages for 1976-77" pp56-85 view details
          in SIGPLAN Notices 13(11) Nov 1978 view details