Schoca --- Scheme for OCaml
---------------------------


Schoca is an implementation of the Scheme language. The primary
purpose of Schoca is the use as an embedded extension language in
OCaml applications (e.g. the ibgsclient).


Why Scheme?
-----------

Scheme is an easy, small, widely known and well-documented
language. There exists some (over Scheme implementations) portable 
libraries. With applications like Gimp and GnuCash it has been proven
that Scheme is a very useful extension language. Other applications (like
Emacs or AutoCAD) use other lisp dialects (elisp, AutoLisp).


Why another implementation of Scheme?
-------------------------------------

OCaml and Scheme need both a garbage collector (GC). With an
implementation of Scheme in OCaml both parts of the application are
using the same GC. This avoids easily a lot of troubles.

The extension language and the application itself are sharing some
code, e.g. for the handling of hashtables. This results in a smaller
size of the application binary.

Furthermore this solution doesn't require type conversion functions.
Scheme types are simple variant or record types.


How does it work?
------------------

There is an simple example with comments in the
directory `examples'.

Status (Version 0.2.2)
--------------------

What works: 
    * there is a small test for r5rs functions in [r5rs-test.scm].
    * for the embedded API look in example/read_ini_file.ml
    * since 0.2.0, continuations works!
    * recursive calls of "force" 

What is missing:
   * macros (planned for 0.4)
   * additional optimization pass (planned for 0.6)
 	** folding of constants
	** faster access to variables
   * some library functions (planned for 0.5)
	[round, rationalize, atan, 
	 make-rectangular, make-polar, magnitude, angle,    	 
	 dynamic-wind, null-environment, interaction-environment, ...] 

There are no `immutable' string restrictions. (compare with R5RS
p. 30)


Requirements
------------

   o ocaml (schoca is tested with 3.07+1)
   o findlib (http://www.ocaml-programming.de/programming/download-caml.html)
   o GNU make, mkdir, bash, rm, echo

The license
-----------

This software is free for free software. It is released under the GPL.

If you want to use this code in a commercial project, you have to pay
my work.  Please contact me.


Contact
-------

Schoca is part of the IBGS project:
http://sf.net/projects/chesslib

Please report bugs, send complains and suggestions, or donations ;-)

Author: Christoph Bauer <ich@christoph-bauer.net>
