Chapter 1.  Introduction

Table of Contents

About this document
About procedure documentation
Where to obtain this document
Version Applicability

SISC [1] is a lightweight, platform independent Scheme system whose primary goals are rapid execution of the complete R5RS and future Scheme standards, plus a useful superset for real-world application development.

SISC's development progresses in two directions, to improve the core interpreter to be simpler, more elegant, and more efficient; and to add necessary functionality through extensions that do not complicate the core.

SISC as a project began as the successor to the Lightweight Interpreter of Scheme Code (LISC). LISC was a small, stack-based almost R4RS compliant Scheme. SISC was born out of the desire to create an interpreter that was of a similar footprint to LISC, but which executed Scheme code much faster, complied fully to the R5RS standard, and which wasn't limited by the stack-based model. SISC met these goals very quickly, and has since progressed in active development to be a competitive Scheme system. As a successor to LISC the interpreter was named the Second Interpreter of Scheme Code.


  • Full R5RS compliance

  • Efficient number tower, with support for integers, floating-point numbers, rationals, and complex numbers of arbitrary precision

  • Lightweight Scheme engine, implementing all R5RS functionality in approximately 10,000 lines of native code plus approximately 5,000 lines of Scheme code.

  • Flexible runtime extensibility through a scopeable module system, which may add arbitrary bindings and new first-class types.

About this document

This document explains the SISC Scheme system. It assumes knowledge of the Scheme language. As such, when discussing the Scheme language, we will focus primarily on differences between the Scheme standard and the language implemented by SISC.

Secondly, SISC implements the R5RS standard. As such, any code written to that standard should run without reading any further.

About procedure documentation

Throughout this document, procedures will be defined using the following syntax:

procedure: (function-name required-argument [optional-argument] [rest-argument] ...) => return value

Description of the procedure's semantics.

A procedure is any function that takes zero or more arguments and returns a value.

parameter: (parameter-name [new-parameter-value])

Description of the parameter.

A Parameter is a special function that is used to store a value in the dynamic-environment. When given no arguments, a parameter will return its current value. When provided an argument, the value of the parameter is set to the value of that argument.

syntax: (syntactic-keyword structure ...)

Description of the syntactic transform.

Syntax refers to a syntactic keyword that when compiled will be transformed into some expression composed only of basic Scheme forms. let, cond, and or are all examples of syntactic forms.

Procedures, parameters, and syntax may take one or more arguments. The name of an argument in a description summarizes the semantics of the expected argument. The type of an argument, when not clear, should be described in the procedure summary paragraph that follows the prototype. If the argument is enclosed in square brackets ([]), that argument is optional, and may be omitted. If an argument is optional and is followed by ellipses (...), then the argument is a rest argument, and may be satisfied by zero or more values.

Finally, some of the functions described in this document are encapsulated in modules (see Chapter 10, Modules and Libraries ). Sections that describe functions in modules will have a requires statement indicating the expression that must be evaluated to make those functions available in the Scheme environment. The requires statement will appear as follows:

Requires: (import module-name)

module-name is will be a name uniquely identifying the name of the module that contains the functions.

Where to obtain this document

This document is produced from DocBook sources and is made available in HTML, Adobe Acrobat (PDF), and PostScript forms. Other formats, and up-to-date versions of this document should be available from the SISC website, .

The DocBook sources are available from the same site, packaged in the source distribution of SISC, and available from the project's CVS tree. Details for accessing both are linked off the project site.

Starting with SISC version 1.8.4, the HTML render of this manual is included in the full binary distributions of SISC.

Version Applicability

This document describes functionality present in SISC version 1.16.4. Some of the document may apply to previous and future versions. When in doubt, the source of this document can be found in the SISC CVS repository, or in the packaged source distribution that should be available wherever the binary distribution was obtained.

[1] The pronunciation is written as sIsk in the International Phonetic Alphabet. This is similar to the English word 'whisk'.