Project Description
A R5RS Scheme interpreter/compiler for the .NET runtime.
Features
- Configurable Read-Eval-Print loop;
- continuations and CALL-WITH-CURRENT-CONTINUATION;
- multiple values (VALUES and CALL-WITH-VALUES).
Things To Do
Currently,
Scheme.Net works as an interpreter. It supports a fairly substantial subset of the R5RS standard, but leaves a lot to be desired:
- No syntactic analysis before evaluation (see Structure and Interpretation of Computer Programs, section 4.1.7);
- No support for syntactic transformations (DEFINE-SYNTAX and either SYNTAX-RULES or SYNTAX-CASE);
- No support for conditions or signals;
- Minimal error checking;
- Minimal support for standard libraries;
- The numeric tower is still slightly buggy.
Goals
The ultimate goal is to create a Scheme compiler that generates native .NET bytecodes. There are various paths that may be followed to this end, including .NET expressions, an IL code generator, or even a virtual stack machine running on top of the .NET VM. How to resolve this issue is still TBD.