Abstract

This is the home page of Nausicaa, a collection of libraries for R6RS Scheme; it officially supports Vicare Scheme. The collection is organised in separate packages, having separate source code repositories; all the packages depend on the main one: Nausicaa/Scheme. See below for the list of packages released so far.

Introduction

Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language, invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions.

The Revised6 Report on the Algorithmic Language Scheme gives a defining description of the programming language Scheme. The report is the work of many people in the course of many years. Revision 6 was edited by Michael Sperber, R. Kent Dybvig, Matthew Flatt and Anton Van Straaten.

Vicare Scheme is an almost R6RS compliant implementation of the Scheme programming language. It is a fork of Ikarus Scheme.

Nausicaa is packaged with the GNU Autotools.

License

Each project in this distribution has its own license notice and copyright assignment. You must look in the individual directories for the COPYING file, and occasionally at the top of each file, where there is a specific license notice and copyright assignment. Additionally the CREDITS file lists the contributors.

Only Libre Software libraries are included. Used licenses are the GNU General Public License, the GNU Lesser General Public License, the BSD license, the BSD-like licenses, the GNU Free Documentation License.

Bugs

Bug reports are welcome. If you feel the need to report a bug you can use the issue tracker at each of tthe GitHub projects page.

Credits

Some of the libraries in Nausicaa are the work of Marco Maggi. Several of the libraries were gathered from the Internet and packaged in the Nausicaa infrastructure; these are the work of many authors.

Nausicaa includes a port of the Scheme Requests For Implementation (SRFI) to R6RS compliant Scheme implementations; the code is integrated in the (nausicaa ---) libraries hierarchy. The original SRFI code is the work of many authors, reference of which you can find the at the top of the source code files; the port to R6RS is mainly the work of Derick Eddington.

Nausicaa/Scheme

The core package providing foundation libraries. It includes: the Scheme language (nausicaa) extending (rnrs) to implement classes and generic functions (CLOS-like without meta-object protocol); the Scheme language (nausicaa mehve) heavily based on extensible generic functions; syntactic extensions; a reorganisation of the SRFI libraries under the (nausicaa ---) hierarchy; lexers and parsers; miscellaneous utility libraries.

Github Project Documentation Download

Nausicaa/Interps

Nausicaa/Interps provides implementations of Scheme symbolic expressions interpreters with increasing complexity with the final purpose of providing both learning and operative tools.

Github Project Documentation Download

Nausicaa/SharpBang

Nausicaa/SharpBang is a simple laboratory to play with client languages by converting their source code to a server language, which is Scheme: either (rnrs (6)) or another derived from it. The proposed architecture is based on the (nausicaa parser-tools silex) libraries and suggests to use (nausicaa parser-tools lalr).

SILex stands for Scheme Implementation of Lex; the library (nausicaa parser-tools silex) is a port to R6RS Scheme of SILex version 1.0 by Danny Dubé. Lalr-scm is a LALR(1) parser tables generator by Dominique Boucher; much of the code is a direct translation from C to Scheme of the GNU Bison sources; the library (nausicaa parser-tools lalr) is a port to R6RS Scheme of Lalr-scm.

The idea of SharpBang is to define a client language, write a lexer for it with the library (nausicaa parser-tools silex) and a parser for it with the library (nausicaa parser-tools lalr), then add a conversion tool to a server Scheme language.

SharpBang comes with an example language embedded, Simple, which shows the mechanism and constitutes a template for new language definitions.

Everybody is writing language conversion tools these days, but this package is especially inspired by Racket (but no code comes from it).

Github Project Documentation Download