For Gauche 0.9.9


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. We cover R7RS small language (see R7RS small language), as well as part of R7RS large libraries (see R7RS large).

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.

Built-in. 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. Built-in.

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-41, Streams

This has become a part of R7RS large. See R7RS stream. Most of stream procedures are also in 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-115, Scheme Regular Expressions

This has become a part of R7RS large. Supported by the module scheme.regex. See R7RS regular expressions.

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-124, Ephemerons

This has become a part of R7RS large. Supported by scheme.ephemeron. Note: Current Gauche’s implementation isn’t optimal. See R7RS ephemerons.

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

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

SRFI-143, Finxums

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

SRFI-144, Flonums

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

SRFI-145, Assumptions

Built-in. See Conditionals.

SRFI-146, Mappings

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

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-154, First-class dynamic extents

Suppored by the module srfi-154. (see First-class dynamic extents).

SRFI-158, Generators and accumulators

This has become a part of R7RS large. Supported by the module scheme.generator (see R7RS generators). Note that most of generator procedures are supported by gauche.generator (see Generators).

SRFI-160, Homogeneous numeric vector libraries

This has become a part of R7RS large, supported by the module scheme.vector.@ where @ is one of base, u8, s8, u16, s16, u32, s32, u64, s64, f32, f64, c64, or c128 (see R7RS uniform vectors).

SRFI-162, Comparators sublibrary

Supported by the module srfi-162. See Comparator sublibrary.

SRFI-173, Hooks

Supported by the module srfi-173 (see Hooks (srfi)), which is a thin layer on top of gauche.hook (see Hooks)


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