archives

[ANN] Cat v0.14 and MetaCat Programming Languages

I've just released a major new version of the Cat programming language, and an extension called MetaCat. The most recent release can be downloaded through Google code hosting.

Cat is a statically typed functional stack-based language, based on the Joy programming language. Cat was designed primarily as a high-level intermediate language for the translation, verification, and optimization of programs written in multi-paradigm languages. Cat also is intended for use as a language for teaching core computer science and programming concepts.

The MetaCat language extends Cat with a term rewriting system which was based on Manfred von Thun's paper A Rewriting System for Joy and is similar to the
GHC Rewrite Rules.

Cat has the following features:

  • strongly typed - all expressions have a well-defined type
  • side-effect labeling - functions with side-effects are typed differently from pure function
  • purity - the level 0, level 1, and level 2, of the Cat specification are entirely with side-effects. Side-effects in the rest of the Cat language are managed by the type system.
  • minimal syntactic constructs - apart from function and macro definition syntax, the only syntactic constructs with predefined meaning are the quotation operators "[" and "]"
  • point-free form - the core language has no named parameters or variables
  • polymorphic variants - the "var" type allows dynamic dispatching based on type
  • type inference - type annotations are optional
  • typed exceptions - exceptions can be thrown and caught in a type safe manner

Features of the release:

A big thank you to the many members of the Lambda-the-Ultimate community whose constributions and insights have been instrumental in the development of the Cat language. Any questions, comments, or requests would be much appreciated.