M2001 is a modular educational mathematical programming language for developing and presenting mathematical algorithms, from the modern discrete to the classical continuous mathematics. M2001 is built on a semantic framework that is based in category theory and has a syntax similar to that of Pascal or Modula-2.
It is designed purely for pedagogic use, so efficiency and ease of implementation have been far less important in its development than generality and range of application. It was created to play an important role in forming a formal algorithmic foundation for first-year college math students.
Based on a multi-layered datatyping scheme, M2001 includes a collection of eight computational types and another of six structured types. Over these two, respectively, collections of mathematical classes and of abstract classes have been built, the latter encompassing the most commonly used abstract data types in computer science:
matrix polynomial rationomial stack queue list powerseries series sequence tree graph digraph MATHEMATICAL CLASSES ABSTRACT CLASSES | | | | | | +-------------------------+---------------------+ | | | product sum set string exponential subdomain STRUCTURED TYPES | | | boolean character natural integer rational real complex text COMPUTATIONAL TYPES
The lower two layers of M2001's typing scheme were based on the earlier experimental called CAT programming language.
A modular mathematical programming language By Ronald E. Prather