Scheme implemented in Go.


Droscheme - a Scheme implementation

Welcome to Droscheme

Droscheme is a Go implementation of the Scheme programming language. It aims to be fully compliant to R5RS, R6RS and R7RS-small (draft) standards. The goals of Droscheme are to provide a complete numerical tower, a complete I/O port system including binary and textual ports, and to experiment with nonstandard numbers and ports.

There are two Droscheme tools: the interpreter (dsi) and the compiler (dsc). The interpreter is available today from here, or the GitHub downloads. The compiler is a work in progress, and it only suitable for compiling the standard library for the interpreter. We hope to fix this soon, and provide a fully functional environment that is seamless accross both tools.

Standard Compliance

It is currently mostly compliant to R5RS and mostly compliant to R7RS-small, but nowhere near R6RS compliant. The current implementation of call/cc (call-with-current-continuation) is the same as that of call/ec (call-with-escape-continuation). There is no difference between non-tail-calls and tail-calls; neither are explicitly optimized, so tail call optimization is not implemented, unless the Go compiler you're using supports it. The gc compiler is said to have partial tail-call optimization, and the gccgo compiler claims to have full tail-call optimization.