| Christopher Diggins 2007-05-24, 7:07 pm |
| I've just released a major new version of the Cat programming language
(http://www.cat-language.com) and an extension called MetaCat (http://
www.cat-language.com/metacat.html). The most recent release can be
downloaded through Google code hosting (http://code.google.com/p/cat-
language/downloads/list).
Cat is a statically typed functional stack-based language, based on
the Joy programming language (http://www.latrobe.edu.au/philosophy/
phimvt/joy.html). 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 macro term rewriting system
which is based on Manfred von Thun's paper A Rewriting System for Joy
(http://www.latrobe.edu.au/philosoph...joy/j07rrs.html) and is
similar to the GHC Rewrite Rules (http://www.haskell.org/ghc/docs/
latest/html/users_guide/rewrite-rules.html)
Cat has the following language 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 Cat to Common Intermediate Language (CIL a.k.a. MSIL) compiler
(http://code.google.com/p/cat-language/wiki/Compilation)
* sub-expression evaluator (http://code.google.com/p/cat-language/
wiki/PartialEvaluation)
* function call inline expansion (http://code.google.com/p/cat-
language/wiki/InlineExpansion)
* over 500 unit tests
* basic graphic capabilities
* over 250 documented built-in and library defined primitive
functions (http://www.cat-language.com/primitives.html)
* multi-tiered specificiation (http://www.cat-language.com/
manual.html#compat) that allows different levels of compatibility with
the standard
* over 200 library defined optimization rules (http://cat-
language.googlecode.com/svn/trunk/macros.cat)
* the interpreter is released under the MIT license, but the source
code is released into the public domain.
* a simple converter from a variant of Cat with named parameters
called Kitten (http://www.cat-language.com/kitten.html) to the
standard point-free Cat.
Any questions, comments, or requests would be much appreciated.
|