Next: Multibyte strings, Previous: Concepts, Up: Concepts [Contents][Index]
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).
:key
), but behaves as if it is automatically bound to
itself. See Keywords, for the details.
Keywords are used extensively when
passing so-called keyword arguments (see Making procedures).
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).
This has become a part of R7RS small. Gauche supports this as Built-in. See Feature conditional.
This has become a part of R7RS large. See R7RS lists. (Some of SRFI-1 procedures are built-in).
Supported natively. See Binding constructs.
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.
Supported by the module srfi-5
.
See A compatible let form with signatures and rest arguments.
This has become a part of R7RS small. Gauche supports this as built-in. See String ports.
Supported as an autoloaded macro. See Feature-based program configuration language.
Syntax receive
is built-in. See Binding constructs.
Supported by the module gauche.record
. See Record types.
Built-in. See Read-time constructor.
This has become a part of R7RS small. Gauche supports it as built-in. See Binding constructs.
Supported by the module srfi-13
. See String library.
(Some of SRFI-13 procedures are built-in).
This has become a part of R7RS large.
Character-set object and a few procedures are built-in.
See Character sets.
Complete set of SRFI-14 is supported by the module scheme.charset
.
See R7RS character sets.
This has become a part of R7RS small. Built-in. See Making procedures.
Built-in. See Assignments.
Some SRFI-18 features are built-in, and the rest is in gauche.threads
module. See Threads.
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.
Supported. See Writing Scheme scripts.
This has become a part of R7RS small. Built-in. See Signaling exceptions.
Supported by the module gauche.array
, which defines
superset of SRFI-25. See Arrays.
Built-in. See Making procedures.
Supported by the module srfi-27
. See Sources of random bits.
Gauche’s built-in format
procedure is a superset of
SRFI-28 format
. See Output.
Supported by the module srfi-29
.
See Localization.
This has become a part of R7RS small. Supported by the native reader. See Lexical structure.
See Binding constructs.
This has become a part of R7RS small. Built-in. See Exceptions.
Built-in. See Conditions.
Partly supported. See Conditions.
Supported by the module srfi-37
.
See A program argument processor.
Built-in. See Reading data and Output.
This has become a part of R7RS small. Built-in (see Parameters).
Supported by the module util.stream
.
See Stream library.
This has become a part of R7RS large. See R7RS stream.
Most of stream procedures are also in util.stream
(see Stream library).
Supported by the module srfi-42
.
See Eager comprehensions.
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.
Built-in. See Lazy evaluation.
This has become a part of R7RS small. Built-in. See Hygienic macros.
Supported as an autoloaded macro. See Requiring extensions.
Most procedures are built-in: See R7RS bitwise operations.
The complete support is in srfi-60
module: See Integers as bits.
cond
clauseSupported natively. See Conditionals.
This has become a part of R7RS small. Supported by the native reader. See Lexical structure.
Supported by the module srfi-64
. See A Scheme API for test suites.
Supported by the module srfi-66
(see Octet vectors).
This is mostly a subset of gauche.uvector
, but has one
slight difference.
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.
Supported by the module srfi-74
(see Octet-addressed binary blocks).
Supported by the module srfi-78
.
It can work with gauche.test
. See Lightweight testing.
=>
in case clausesThis has become a part of R7RS small. Supported natively. See Conditionals.
Supported natively. See Sorting and merging.
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.
Supported by the module srfi-98
. See Accessing environment variables.
Supported by the module gauche.record
. See Record types.
This has become a part of R7RS large.
Supported by the module scheme.rlist
.
Supported by the module srfi-106
. See Basic socket interface.
This has become a part of R7RS large as scheme.box
.
Gauche has it as built-in. See Boxes.
Supported by the module srfi-112
.
See Portable runtime environment inquiry.
This has become a part of R7RS large.
Supported by the module scheme.set
. See R7RS sets.
Some of the features are built-in (see Basic comparators). Full srfi spec is supported by the module srfi-114
(see Comparators).
This has become a part of R7RS large.
Supported by the module scheme.regex
. See R7RS regular expressions.
This has become a part of R7RS large.
Immutable pairs are supported natively (see Mutable and immutable pairs).
Full set of APIs are available
in the module scheme.ilist
(see R7RS immutable 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)
Supported by the module srfi-118
.
(see Simple adjustable-size strings)
Supported by the module srfi-120
(see Timer APIs).
It is a wrapper of control.scheduler
(see Scheduler).
This has become a part of R7RS large.
Gauche’s gauche.generator
is superset of srfi-121
(see Generators).
This has become a part of R7RS large.
Supported by scheme.ephemeron
.
Note: Current Gauche’s implementation isn’t optimal.
See R7RS ephemerons.
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.
This has become a part of R7RS large.
Supported by scheme.lseq
(see R7RS lazy sequences).
This has become a part of R7RS large. Built-in. See Basic comparators, for the details.
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.
String cursors are supported natively (see String cursors). Most of built-in and srfi-13 string procedures accept cursors in addition to indexes. The module srfi-130 provides several procedures that has the same name as srfi-13 but returns a string cursor instead of an index (see Cursor-based string library).
This srfi is a pure subset of srfi-99, and gauche.record
’s
define-record-type
covers it. See Record types.
This has become a part of R7RS large.
Supported by the module scheme.sort
.
See R7RS sort.
This has become a part of R7RS large.
Supported by the module scheme.vector
. See R7RS vectors.
This has become a part of R7RS large.
The module data.ideque
is compatible to srfi-134.
See Immutable deques.
This has become a part of R7RS large. In Gauche, the text type is not disjoint from the string type. Instead, a text is simply an immutable and indexed string. See String indexing, for the detail of indexed string. The API is described in R7RS immutable texts.
This has become a part of R7RS large.
Supported by the module scheme.division
. See R7RS integer division.
This has become a part of R7RS large.
Supported by the module scheme.fixnum
. See R7RS fixnum.
This has become a part of R7RS large.
Supported by the module scheme.flonum
. See R7RS flonum.
Built-in. See Conditionals.
This has become a part of R7RS large.
Supported by the module scheme.mapping
.
See R7RS mappings.
The built-in syntax-rules
support srfi-149
.
Supported by the module srfi-151
(see R7RS bitwise operations).
Note that many equivalent procedures are provided built-in
(see Basic bitwise operations).
Supported by the module srfi-152
(see String library (reduced)).
Suppored by the module srfi-154
. (see First-class dynamic extents).
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).
This has become a part of R7RS large. See R7RS combinator formatting.
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).
Supported by the module srfi-162
. See Comparator sublibrary.
Supported by the module srfi-170
. See POSIX API.
Supported by the module srfi-173
(see Hooks (srfi)),
which is a thin layer on top of gauche.hook
(see Hooks)
Supported by the module srfi-174
(see POSIX timespecs).
In Gauche, the timespec type is the same as built-in <time>
object, which is also the same as srfi-19 time.
Supported by the module srfi-175
(see ASCII character library).
Supported as a command-line flag of gosh
.
The version-alist
procedure is built-in.
The basic support is built-in (see Bitvectors).
Complete support is in the module srfi-178
(see Bitvector library.
Supported by the module srfi-180
(see JSON).
Note that Gauche also has rfc.json
,
and srfi-180
is implemented on top of it.
Supported by the module srfi-181
(see Custom ports).
Gauche has an original custom port mechanism (see Virtual ports), and
This srfi is built in top of it.
Supported by the module srfi-185
.
See Linear adjustable-length strings.
Supported by the module srfi-189
.
Gauche’s port already has positining mechanism, so main procedures
are built-in (see Common port operations).
A few additional procedures are provided by the module srfi-192
(see Port positioning).
Two procedures, command-line
and script-file
, are
built-in. Other APIs are provided by the module srfi-193
(see Command line).
Built-in. See Boxes.
Suppored by the module srfi-196
. Also the data.range
module is the superset of this srfi (see Range).
Supported by the module srfi-197
(see Pipeline operators).
Supported by the module srfi-217
(see Integer sets).
Gauche’s built-in define
(both R7RS-compatible one and
extended one) supports this feature.
If you import srfi-219 explicitly, it imports null#define
.
See Define higher-order lambda, for the details.
Supported by the module srfi-221
(see Generator/accumulator sub-library).
Supported by the module srfi-229
(see Tagged procedures).
Next: Multibyte strings, Previous: Concepts, Up: Concepts [Contents][Index]