For Gauche 0.9.6


Next: , Previous: , Up: Concepts   [Contents][Index]

2.1 Standard conformance

Gauche conforms "Revised^7 Report of Algorithmic Language Scheme," (R7RS) including optional syntax and procedures, with a few exceptions explained below.

Note that, since Gauche predates R7RS, most existing Gauche source code doesn’t follow the R7RS program/library structure. Gauche can read both traditional Gauche modules/scripts and R7RS programs/libraries seamlessly. See Library modules - R7RS standard libraries, for the details of how R7RS is integrated into Gauche.

Gauche also supports the following SRFIs (Scheme Request for Implementation).

SRFI-0, Feature-based conditional expansion construct.

This has become a part of R7RS small. Gauche supports this as Built-in. See Feature conditional.

SRFI-1, List library (R7RS lists)

This has become a part of R7RS large. See R7RS lists. (Some of SRFI-1 procedures are built-in).

SRFI-2, AND-LET*: an AND with local bindings, a guarded LET* special form.

Supported natively. See Binding constructs.

SRFI-4, Homogeneous numeric vector datatypes.

The module gauche.uvector provides a superset of srfi-4 procedures, including arithmetic operations and generic interface on the SRFI-4 vectors. See Uniform vectors.

SRFI-5, A compatible let form with signatures and rest arguments

Supported by the module srfi-5. See A compatible let form with signatures and rest arguments.

SRFI-6, Basic String Ports.

This has become a part of R7RS small. Gauche supports this as built-in. See String ports.

SRFI-7, Feature-based program configuration language

Supported as an autoloaded macro. See Feature-based program configuration language.

SRFI-8, receive: Binding to multiple values.

Syntax receive is built-in. See Binding constructs.

SRFI-9, Defining record types.

Supported by the module gauche.record. See Record types.

SRFI-10, Sharp-comma external form.

Built-in. See Read-time constructor.

SRFI-11, Syntax for receiving multiple values.

This has become a part of R7RS small. Gauche supports it as built-in. See Binding constructs.

SRFI-13, String library

Supported by the module srfi-13. See String library. (Some of SRFI-13 procedures are built-in).

SRFI-14, Character-set library

This has become a part of R7RS large. Character-set object and a few procedures are built-in. See Character set. Complete set of SRFI-14 is supported by the module scheme.charset. See R7RS character sets.

SRFI-16, Syntax for procedures of variable arity (case-lambda)

This has become a part of R7RS small. Built-in. See Making Procedures.

SRFI-17, Generalized set!

Built-in. See Assignments.

SRFI-18, Multithreading support

Some SRFI-18 features are built-in, and the rest is in gauche.threads module. See Threads.

SRFI-19, Time Data Types and Procedures.

Time data type is Gauche built-in (see Time). Complete set of SRFI-19 is supported by the module srfi-19. See Time data types and procedures.

SRFI-22, Running Scheme scripts on Unix

Supported. See Writing Scheme scripts.

SRFI-23, Error reporting mechanism.

This has become a part of R7RS small. Built-in. See Signaling exceptions.

SRFI-25, Multi-dimensional array primitives.

Supported by the module gauche.array, which defines superset of SRFI-25. See Arrays.

SRFI-26, Notation for specializing parameters without currying.

As an autoloaded macro. See Making Procedures.

SRFI-27, Sources of Random Bits.

Supported by the module srfi-27. See Sources of random bits.

SRFI-28, Basic format strings.

Gauche’s built-in format procedure is a superset of SRFI-28 format. See Output.

SRFI-29, Localization

Supported by the module srfi-29. See Localization.

SRFI-30, Nested multi-line comments.

This has become a part of R7RS small. Supported by the native reader. See Lexical structure.

SRFI-31, A special form rec for recursive evaluation

Defined as an autoloaded macro. See Binding constructs.

SRFI-34, Exception Handling for Programs

This has become a part of R7RS small. Built-in. See Exceptions. (However, Gauche implements srfi-18’s semantics of raise literally, which differs slightly from srfi-34’s. This may be changed in future.)

SRFI-35, Conditions

Built-in. See Conditions.

SRFI-36, I/O Conditions

Partly supported. See Conditions.

SRFI-37, args-fold: a program argument processor

Supported by the module srfi-37. See A program argument processor.

SRFI-38, External Representation for Data With Shared Structure

Built-in. See Reading data and Output.

SRFI-39, Parameter objects

This has become a part of R7RS small. Supported by the module gauche.parameter. See Parameters.

SRFI-40, A Library of Streams

Supported by the module util.stream. See Stream library.

SRFI-42, Eager comprehensions

Supported by the module srfi-42. See Eager comprehensions.

SRFI-43, Vector library

Supported by the module srfi-43. See Vector library (Legacy). Note that this srfi is superseded by R7RS scheme.vector library (formerly known as srfi-133). See R7RS vectors.

SRFI-45, Primitives for Expressing Iterative Lazy Algorithms

Built-in. See Lazy evaluation.

SRFI-46, Basic Syntax-rules Extensions

This has become a part of R7RS small. Built-in. See Hygienic macros.

SRFI-55, require-extension

Supported as an autoloaded macro. See Requiring extensions.

SRFI-60, Integers as bits

Most procedures are built-in: See Bitwise operations. The complete support is in srfi-60 module: See Integers as bits.

SRFI-61, A more general cond clause

Supported natively. See Conditionals.

SRFI-62, S-expression comments

This has become a part of R7RS small. Supported by the native reader. See Lexical structure.

SRFI-64, A Scheme API for test suites

Supported by the module srfi-64.

SRFI-66, Octet vectors

Supported by the module srfi-66 (see Octet vectors). This is mostly a subset of gauche.uvector, but has one slight difference.

SRFI-69, Basic hash tables

Supported by the module srfi-69 (see Basic hash tables). Note that this srfi is superseded by R7RS scheme.hash-table library (formerly known as srfi-125). See R7RS hash tables.

SRFI-74, Octet-addressed binary blocks

Supported by the module srfi-74 (see Octet-addressed binary blocks).

SRFI-78, Lightweight testing

Supported by the module srfi-78. Since Gauche already has its own test framework (see Unit testing), this is mainly for third-party modules that adopt srfi-78 for testing.

SRFI-87, => in case clauses

This has become a part of R7RS small. Supported natively. See Conditionals.

SRFI-95, Sorting and merging

Supported natively. See Sorting and merging.

SRFI-96, SLIB Prerequisites

This srfi is not exactly a library, but rather a description of features the platform should provide to support SLIB. In order to load this module, SLIB must be already installed. See SLIB, for the details.

SRFI-98, An interface to access environment variables

Supported by the module srfi-98. See Accessing environment variables.

SRFI-99, ERR5RS Records

Supported by the module gauche.record. See Record types.

SRFI-106, Basic socket interface

Supported by the module srfi-106. See Basic socket interface.

SRFI-111, Boxes

This has become a part of R7RS large. Supported by the module scheme.box. See R7RS boxes.

SRFI-112, Environment inquiry

Supported by the module srfi-112. See Portable runtime environment inquiry.

SRFI-113, Sets and Bags

This has become a part of R7RS large. Supported by the module scheme.set. See R7RS sets.

SRFI-114, Comparators

Some of the features are built-in (see Basic comparators). Full srfi spec is supported by the module srfi-114 (see Comparators).

SRFI-117, Queues based on lists.

This has become a part of R7RS large. Supported by the module scheme.list-queue, which is implemented on top of data.queue. (see R7RS list queues)

SRFI-118, Simple adjustable-size strings

Supported by the module srfi-118. (see Simple adjustable-size strings)

SRFI-121, Generators

This has become a part of R7RS large. Gauche’s gauche.generator is superset of srfi-121 (see Generators).

SRFI-125, Intermediate hash tables

This has become a part of R7RS large. Supported by scheme.hash-table (see R7RS hash tables). Note that Gauche’s native interface provides the same functionalities, but under slightly different names for the backward compatibility. See Hashtables.

SRFI-127, Lazy sequences

This has become a part of R7RS large. Supported by scheme.lseq (see R7RS lazy sequences).

SRFI-128, Comparators (reduced)

This has become a part of R7RS large. Built-in. See Basic comparators, for the details.

SRFI-129, Titlecase procedures

The procedures char-title-case? and char-titlecase are built-in, and string-titlecase is in gauche.unicode. For the compatibility, you can (use srfi-129) or (import (srfi 129)) to get these three procedures.

SRFI-131, ERR5RS Record Syntax (reduced)

This srfi is a pure subset of srfi-99, and gauche.record’s define-record-type covers it. See Record types.

SRFI-132, Sort libraries

This has become a part of R7RS large. Supported by the module scheme.sort. See R7RS sort.

SRFI-133, Vector library (R7RS-compatible)

This has become a part of R7RS large. Supported by the module scheme.vector. See R7RS vectors.

SRFI-134, Immutable Deques

This has become a part of R7RS large. The module data.ideque is compatible to srfi-134. See Immutable deques.

SRFI-141, Integer division

Supported by the module srfi-141. See Integer division.

SRFI-143, Finxums

Supported by the module srfi-143. See Fixnums.

SRFI-145, Assumptions

Built-in. See Conditionals.

SRFI-146, Mappings

Supported by the module srfi-146. See Mappings and hashmaps.

SRFI-149, Basic syntax-rules template extensions

The built-in syntax-rules support srfi-149.

SRFI-151, Bitwise operations

Supported by the module srfi-151 (see Bitwise operations). Note that many equivalent procedures are provided built-in (see Basic bitwise operations).

SRFI-152, String library (reduced)

Supported by the module srfi-152 (see String library (reduced)).

SRFI-158, Generators and accumulators

Supported by the module srfi-158 (see Generators and accumulators). Note that most of generator procedures are supported by gauche.generator (see Generators).


Next: , Previous: , Up: Concepts   [Contents][Index]