Scheme Libraries

The designers of Scheme intentionally kept the core language as simple as possible, to make impementation easier and to keep the language conceptually clear and easily understood. However, this leaves the client programmers of the language with few tools with which to construct new programs with. In order to free Scheme programmers from having to reinvent the wheel with every program, implementors often extended the language in various ways. However, since each vendor had their own peculiar extensions, it caused the user community to fragment based on different implementations.

SRFIs

To overcome this, the Scheme user community has define a set of common libraries, called the Scheme Requests For Implementation (SRFI), after the vetting process by while the libraries are defined. These libraries include error reporting and exception-handling systems, extended list and I/O operations, record types, string and character libraries, localization, time and date operations, collection types, improved support for lazy evaluation, command-line argument processing, foreign function calling, and mechanisms for managing library dependencies. While support for the SRFI libraries is by no means universal,many vendors implement a substantial portion of the SRFI toolkit. The full list of current SRFIs may be found at http://srfi.schemers.org/.

SLIB

The major drawbacks of the SRFIs are that they do not support certain tools for which there is a demand, such as a module system, and that while the define a standard library and provide reference implementations, they do not provide a working portable library which can be applied to the Scheme implementations directly. This shortfall is largely fixed by a spearate but widely used library implementation, called SLIB. The SLIB library - which actually predates the SRFI system - provides a large library and module system that is portable among most major Scheme implementations. While it is not an implementation of the SRFIs per se, it supports several of the SRFI-defined library constructs.

Contents Previous Next