For Gauche 0.9.5

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 integration, 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.

Built-in. See Feature conditional.

SRFI-1, List library.

Supported by the module srfi-1. See List library. (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.

SRFI-6 procedures are 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.

Supported by the module srfi-11. See Let-values.

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

Character-set object and a few SRFI-14 procedures are built-in. See Character set. Complete set of SRFI-14 is supported by the module srfi-14. See Character-set library.

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

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.

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.

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

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

Supported by the module gauche.parameter. See Parameters.

SRFI-40, A Library of Streams

Supported by the module 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).

SRFI-45, Primitives for Expressing Iterative Lazy Algorithms

Built-in. See Lazy evaluation.

SRFI-46, Basic Syntax-rules Extensions

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

Supported by the native reader. See Lexical structure.

SRFI-69, Basic hash tables

Supported by the module srfi-69 (see Basic hash tables). Note that Gauche provides built-in hashtable support (see Hashtables). They just use different names in some procedures.

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

Supported natively. See Conditionals.

SRFI-95, Sorting and merging

Supported natively. See Sorting and merging.

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

Supported by the module srfi-111. See Boxes.

SRFI-112, Environment inquiry

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

SRFI-113, Sets and Bags

Supported by the module srfi-113. See Sets and bags.

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.

Supported by the module srfi-117, which is implemented on top of data.queue. (see Queues based on lists)

SRFI-118, Simple adjustable-size strings

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

SRFI-121, Generators

Gauche’s gauche.generator is superset of srfi-121 (see Generators).

SRFI-128, Comparators (reduced)

Built-in. See Basic comparators, for the details.

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-133, Vector library (R7RS-compatible)

Supported by the module srfi-133. See Vector library.

SRFI-134, Immutable Deques

The module data.ideque is compatible to srfi-134. See Immutable deques.

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