Yeti |
... and the slime became the worm and the worm the serpent, the serpent became the yeti of the mountain forests and the yeti became man. |
Yeti is
ML style
functional programming language, that runs on the
JVM.
- Binary jar archive: yeti.jar
(occasionally updated and built from development snapshots)
- Source is available through git (ant is needed for building):
git clone git://github.com/mth/yeti.git
(BSD licensed)
- Read the tutorial (also available as
PDF).
- Vim syntax hilighting and filetype plugin.
Save these files as ~/.vim/syntax/yeti.vim and
~/.vim/ftplugin/yeti.vim accordingly, and add
au BufNewFile,BufRead *.yeti setlocal filetype=yeti ts=8 sw=4 sts=4 expandtab
into your ~/.vimrc.
- Mailing list
The goal of the Yeti is to have a clean and minimal expressive language on the JVM that allows functional style programming, has static type inference and interfaces well with Java code.
Some of the features:
- Type inference using the Hindley-Milner algorithm. The types are
statically inferred at compile time without a need for explicit type
declarations.
- Polymorphic structure and
variant types. Using those resembles
duck typing from the dynamic languages - for example, when a value is used as
a structure having a field foo, which gives string value, then any structure
with string field foo will be good enough.
- Property fields in structures (access goes through function calls).
- Lazy lists
- Pattern matching on values
- Comfortable string regex support
- Easy to call existing Java code
- Interactive REPL environment for experimenting
- Compiles directly to Java bytecode
More information will be probably available at future - the language
is still in the development, although existing syntax should be stable.
There is a plan to add macro support
and standard library (especially the io module) needs work (and documentation).
Those who are brave, may try it now. It is quite usable already, but sure it
contains undiscovered bugs.
Updates...
9/2008. Some bugfixes here and there have happened (you can read the git log).
Java classes are probably next thing to be implemented
(actually the syntax is decided and parser support already exists).
10/2008. Java class definitions are
supported now. Additionally bunch of bugfixes and optimisations have been done.
12/2008. Some bugfixes and .[] can now be used for accessing Java array
elements too. Also added some smart auto-casting for Java arrays.
05/2009. Some bugfixes, allowed partial variant match in case,
recursive type definitions.
08/2009. Bugfixes, case pattern matching should work now better.
Mixed Java/Yeti build task enchasements.
(put yeti into subject)