-*- text -*-

[To do: update, talking about the eAM]

GNU epsilon 0.2.1CVS

epsilon is a strongly-typed purely functional language with static
scoping.

epsilon is oriented to ease of development and readability.
The static scoping rule and the type checkings at compile-time
should make the language "safe".

What is going to make this language really unique is its functional
nature mixed with a feature ispired by Lisp, but 'rationalized' to be
type-safe: the ability to work with programs as data, and to execute
them at runtime. Soon to come.

epsilon will also serve as an extension language, as soon as the
epsilon-Abstract-Machine-to-Scheme translator is finished. The
generated Scheme code will be interpreted by Guile, thus enabling its
use in extendable applications.
Otherwise, when speed is important, epsilon source code can be
translated into fast C code.

epsilon is part of the GNU Project. See http://www.gnu.org.
The homepage is http://www.gnu.org/software/epsilon.

Full documentation
------------------
See the documents in the doc/ subdirectory for more
information.


Compiling
---------
Please see the INSTALL file.


Testing
-------
  The "epsilon" program (it's the read-eval-print-loop) is currently
'broken', i.e. is buggy and does not support the recent features of
espilon such as concrete and abstract types.
  For the time being you should stick to the the plain old
compiler/assembler/virtual-machine.


  1. Enter a temporary directory, typing, for example, 

    cd /tmp

  2. Write a test epsilon module using a text editor, and save it in
     the temporaray directory with .epb extension.
     A sample epsilon program may be something like (don't copy the
     "-" characters):
---------------------------------------------
define interval = fix \ f . 
  \ x . \ y .
  if x > y then
    []
  else
    x :: (f (x + 1) y);

interval 1 100;
---------------------------------------------
    Save the program as, for example, test.epb

  3. Compile the program: there should be no errors from the epsilonc
     compiler: 

    epsilonc test.epb

  4. Assemble the generated test.lvm file:
  
    lvmas test.lvm

  5. Run the bytecode file via the LVM virtual machine:

    lvm test.lvmo


--

To have an feeling of the syntax of epsilon, and for testing
purposes, you can copy the test programs from the examples/
directory.


-----

Copyright (C) 2002, 2003 Luca Saiu

This file is part of GNU epsilon.

GNU epsilon is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU epsilon is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with epsilon; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
