# Introduction

&SISC;

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

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.

## Features

- 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; `return value` `function-name` `required-argument` `optional-argument` `rest-argument`

> > Description of the procedure's semantics.

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

> ¶meter; `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 Modules). 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, http://sisc.sourceforge.net .

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

&version;