Abstract
This is the home page of Nausicaa, a collection of libraries for R6RS Scheme. Currently, it officially supports Vicare Scheme and unofficially: Mosh, Petite Chez, Racket, Ypsilon; unofficial support means: if it works fine, else patches are welcome.
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.
The collection is organised in packages, each distributed as a separate archive. 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 an experimental fork of Ikarus Scheme.
Mosh Scheme is an R6RS compliant implementation of the Scheme programming language. It is the creation of Higepon, kokosabu, herumi and .mjt.
Petite Chez Scheme is an R6RS compliant implementation of the Scheme programming language. It is produced by Cadence Research Systems.
Ypsilon Scheme is an R6RS compliant implementation of the Scheme programming language. It is the creation of Yoshikatsu Fujita at LittleWing Company.
Prerequisites
The Nausicaa installation infrastructure supports only GNU systems. This means Unix like systems in which the following common tools and packages are installed: GNU Bash, GNU Make, GNU Coreutils, GNU Find, GNU tar, Gzip, Bzip2. The interfaces to foreign C language libraries are tested only with the GNU C library and the GNU C compiler.
Several libraries depend upon the port to R6RS of the Scheme Requests For Implementation (SRFI); Nausicaa includes a port of them to R6RS compliant Scheme implementations. 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 the work of Derick Eddington.
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
If you feel the need to report a bug you can use the issue tracker at the GitHub project page.
Credits
The Nausicaa distribution and installation infrastructure is the creation of Marco Maggi. If this work exists, it is because of the GNU Software tools that he uses all the time. For other credits notes look in the individual, project specific, README files.
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; lexers and parsers; miscellaneous utility libraries.
Nausicaa/MP
Nausicaa/MP implements bindings to the GMP, MPFR, MPFI, MPC, and MPFRCX libraries for multiple precision integers and floating-point numbers.
GMP stands for GNU Multiple Precision arithmetic library. MPFR stands for Multiple Precision Floating-Point Reliable library. MPFI stands for Multiple Precision Floating-Point Interval library. MPC stands for Multiple Precision Complex library. MPFRCX stands for Multiple Precision Real and Complex Polynomial library.
Nausicaa/Zlib
Nausicaa/Zlib is a binding to Zlib, the popular compression library.
Nausicaa/Bzlib
Nausicaa/Bzlib is a binding to Libbzip2, the popular compression library.
Nausicaa/Cairo
Nausicaa/Cairo is a binding to the Cairo 2D graphics library.
Nausicaa/UUID
Nausicaa/UUID is a binding to the OSSP UUID library, an ISO-C:1999 API for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC 4122 compliant Universally Unique Identifier (UUID).
Nausicaa/SQLite
Nausicaa/SQLite is a binding to SQLite, a SQL database engine.
Nausicaa/PostgreSQL
Nausicaa/PostgreSQL is a binding to Libpq, a client C language library for the PostgreSQL database engine.
Nausicaa/cURL
Nausicaa/cURL is a binding to the Libcurl library, a tool to transfer data from or to a server, using one of the supported protocols (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP or FILE).
Nausicaa/GPG-Error
Nausicaa/GPG-Error is a binding to the Libgpg-error C language library, which defines error codes for the GnuPG components.
Nausicaa/Gcrypt
Nausicaa/Gcrypt is a binding to the GNU Libgcrypt C language library of cryptographic building blocks.
Nausicaa/Nettle
Nausicaa/Nettle is a binding to the Nettle C language library of cryptographic building blocks.
Nausicaa/Expat
Nausicaa/Expat is a binding to the Expat library for parsing XML documents.
Nausicaa/BLAS
Nausicaa/BLAS is a binding to the BLAS/CBLAS C language library, which implements basic linear algebra algorithms.
Nausicaa/LAPACK
Nausicaa/LAPACK is a binding to the CLAPACK C language library, which implements basic linear algebra algorithms.
Nausicaa/Libxml2
Nausicaa/Libxml2 is a binding to the Libxml2 C language library, the XML toolkit for the GNOME project.
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.
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).

