Gaucheは、オプショナルな構文や手続きも含め “Revised^7 Report of Algorithmic Language Scheme” (R7RS) に準拠しています。 “R7RS small” と呼ばれるコア言語(R7RS small language参照)に加え、 “R7RS large” ライブラリの一部をサポートします(R7RS large参照)。
:key
)を持つシンボルはキーワードで、
自動的に自分自身に束縛されます。
詳しくはキーワードを参照してください。
主にキーワード引数を渡すときに使われます(手続きを作る参照)。
GaucheはR7RS以前から開発されているため、既存のGaucheソースコードの多くはR7RSの プログラムやライブラリの構造に従っていないことに注意してください。 Gaucheは、伝統的なGaucheのモジュール形式やスクリプトも、R7RS形式のプログラムや ライブラリも、両方解釈することができます。 R7RSがどのようにGaucheに統合されているかについては、 ライブラリモジュール - R7RS標準ライブラリを参照してください。
Gaucheはまた、以下のSRFIをサポートしています。
R7RS smallに取り込まれました。Gaucheは組み込みでサポートしています。 機能条件式参照。
これはR7RS largeの一部になりました。scheme.list
- R7RSリスト参照。
SRFI-1の手続きのうちいくつかは組み込みになっています。
組み込みです。変数束縛参照。
モジュールgauche.uvector
が
srfi.4
の上位互換手続きを提供します。
同モジュールにはSRFI-4の手続きに加え、
算術演算やジェネリックなインタフェースが定義されています。ユニフォームベクタ参照。
モジュールsrfi.5
でサポートされます。
srfi.5
- シグネチャとrest引数に互換性のあるlet形式参照。
これはR7RS smallの一部になりました。 Gaucheは組み込みでサポートしています。文字列ポート参照。
オートロードされるマクロとしてサポートされています。
srfi.7
- 機能ベースプログラム設定言語参照。
構文receive
は組み込みになっています。変数束縛参照。
モジュールgauche.record
でサポートされます。gauche.record
- レコード型参照。
組み込みです。読み込み時コンストラクタ参照。
これはR7RS smallの一部になりました。Gaucheは組み込みでサポートしています。 変数束縛参照。
モジュールsrfi.13
でサポートされます。srfi.13
- 文字列ライブラリ参照。
(SRFI-13の手続きのいくつかは組み込みになっています。)
これはR7RS largeの一部になりました。
文字集合と基本的な手続きは組み込みになっています。
文字集合参照。
SRFI-14の完全なサポートはモジュールscheme.charset
で提供されています。scheme.charset
- R7RS文字集合参照。
これはR7RS smallの一部になりました。 組み込みです。手続きを作る参照。
組み込みです。代入参照。
いくつかのSRFI-18の機能は組み込みであり、、残りのAPIは
gauche.threads
モジュールで提供されます。gauche.threads
- スレッド参照。
時間のデータ型はGauche組み込みです(時間参照)。
SRFI-19の完全なサポートはモジュールsrfi.19
で提供されています。
srfi.19
- 時間のデータ型と手続き参照。
サポートされています。Schemeスクリプトを書く参照。
これはR7RS smallの一部になりました。 組み込みです。例外の通知参照。
モジュールgauche.array
が、SRFI-25の上位互換と
なっています。gauche.array
- 配列参照。
手続きを作る参照。
モジュールsrfi.27
でサポートされます。srfi.27
- ランダムビットのソース参照。
Gauche組み込みのformat
がSRFI-28のものの上位互換に
なっています。出力参照。
モジュールsrfi.29
でサポートされます。
srfi.29
- 地域化参照。
これはR7RS smallの一部になりました。 ネイティブのリーダでサポートされています。字句構造参照。
rec
. 組み込みです。変数束縛参照。
これはR7RS smallの一部になりました。 組み込みです。例外参照。
組み込みです。コンディション参照。
部分的にサポートされています. コンディション参照。
モジュールsrfi.37
でサポートされます。
srfi.37
- args-fold プログラム引数処理参照。
これはR7RS smallの一部になりました。 組み込みです。パラメータ参照。
モジュールutil.stream
でサポートされています。
util.stream
- ストリームライブラリ参照。
これはR7RS largeの一部になりました。scheme.stream
- R7RSストリーム参照。
ストリーム手続きのほぼ全てはutil.stream
からも提供されています
(util.stream
- ストリームライブラリ参照)。
モジュールsrfi.42
でサポートされます。
srfi.42
- 先行評価的内包表記参照。
モジュールsrfi.43
でサポートされます。
srfi.43
- ベクタライブラリ(旧式)参照。
註:このsrfiはR7RSのscheme.vector
ライブラリ
(srfi.133
として導入されたもの)により置き換えられました。
scheme.vector
- R7RSベクタ参照。
組み込みです。 遅延評価参照。
これはR7RS smallの一部となりました。 組み込みです。 衛生的マクロ参照。
オートロードマクロとしてサポートされます。
srfi.55
- require の拡張参照。
ほとんどの手続きは組み込みになっています。scheme.bitwise
- R7RSビット演算参照。
完全なサポートはsrfi.60
モジュールで提供されます。
srfi.60
- 整数に対するビット操作参照。
cond
節組み込みです。条件式参照。
これはR7RS smallの一部となりました。 ネイティブのリーダでサポートされています。字句構造参照。
モジュールsrfi.64
でサポートされます。srfi.64
- SchemeテストスイートAPI参照。
モジュールsrfi.66
でサポートされます (srfi.66
- オクテットベクタ参照)。
ほぼgauche.uvector
のサブセットですが、
一ヶ所だけ違いがあります。
モジュールsrfi.69
でサポートされます (srfi.69
- 基本的なハッシュテーブル参照)。
このsrfiはR7RSのscheme.hash-table
(srfi.125
として導入されたもの) で置き換えられました。
詳しくはscheme.hash-table
- R7RSハッシュテーブルを参照してください。
モジュールsrfi.74
でサポートされます (srfi.74
- オクテットを単位とするバイナリブロック参照)。
モジュールsrfi.78
でサポートされます。
gauche.test
と一緒に使うこともできます。srfi.78
- 軽量なテスト参照。
=>
これはR7RS smallの一部となりました。 組込みです。条件式参照。
組み込みです。ソートとマージ参照。
このsrfiはライブラリというよりは、SLIBをサポートするためにプラットフォームが
提供しなければならない機能要件を記述するものです。このモジュールをロードするためには、
SLIBが既にインストールされていることが必要です。
詳しくはslib
- SLIBインタフェースを参照してください。
モジュールsrfi.98
でサポートされます。srfi.98
- 環境変数へのアクセス参照。
モジュールgauche.record
でサポートされます。gauche.record
- レコード型参照。
これはR7RS largeの一部となりました。
モジュールscheme.rlist
でサポートされます
(scheme.rlist
- R7RSランダムアクセスリスト参照)。
モジュールsrfi.106
でサポートされます。srfi.106
- 基本的なソケットインタフェース参照。
これはscheme.box
としてR7RS largeの一部となりました。
Gaucheは組み込みでサポートしています。ボックス参照。
モジュールsrfi.112
でサポートされます。
srfi.112
- 実行環境の問い合わせ参照。
これはR7RS largeの一部となりました。
モジュールscheme.set
でサポートされます。 scheme.set
- R7RSセット参照。
いくつかの機能は組み込みです(基本的な比較器参照)。srfiの完全な仕様はモジュールsrfi.114
でサポートされます(srfi.114
- 比較器参照)。
これはR7RS largeの一部となりました。
モジュールscheme.regex
でサポートされます。scheme.regex
- R7RS正規表現参照。
これはR7RS largeの一部となりました。
変更不可なペアはGauche本体で直接サポートされます(変更可能なペアと変更不可なペア参照)。
フルセットのAPIは モジュールscheme.ilist
でサポートされます(scheme.ilist
- R7RS変更不可リスト参照)。
これはR7RS largeの一部となりました。
data.queue
上に実装されたモジュールscheme.list-queue
でサポートされます。
(scheme.list-queue
- R7RSリストキュー参照)
モジュールsrfi.118
でサポートされます。
(srfi.118
- 簡単な可変長文字列参照)
モジュールsrfi.120
でサポートされます (srfi.120
- タイマーAPI参照)。
これはcontrol.scheduler
のラッパーです (control.scheduler
- スケジューラ参照)。
これはR7RS largeの一部となりました。
Gaucheのgauche.generator
がsrfi-121のスーパーセットになっています。
(gauche.generator
- ジェネレータ参照)
これはR7RS largeの一部となりました。
scheme.ephemeron
モジュールでサポートされます
(註: 現在のGaucheでの実装は理想的ではありません。)
scheme.ephemeron
- R7RS Ephemeron参照。
これはR7RS largeの一部となりました。
scheme.hash-table
モジュールでサポートされます
(scheme.hash-table
- R7RSハッシュテーブル参照)。
Gaucheの組み込みインタフェースも同じ機能を提供していますが、
既存のコードとの互換性のために名前が若干異なります (ハッシュテーブル参照)。
これはR7RS largeの一部となりました。
scheme.lseq
モジュールでサポートされます。
scheme.lseq
- R7RS遅延シーケンス参照。
これはR7RS largeの一部となりました。 組み込みです。基本的な比較器参照。
char-title-case?
とchar-titlecase
は組み込みで、
string-titlecase
はgauche.unicode
モジュールにあります。
互換性のため、(use srfi.129)
や(import (srfi 129))
とすれば
この3つの手続きがインポートされます。
文字列カーソルは組み込みでサポートされています (文字列カーソル参照)。
また、多くの組み込みおよびsrfi-13手続きはインデックスに加えてカーソルも
取れるようになっています。モジュールsrfi-130は、srfi-13と同名だけれど
インデックスの代わりにカーソルを返す手続きを提供します
(srfi.130
- カーソルを使う文字列ライブラリ参照)。
このsrfiはsrfi-99のサブセットで、gauche.record
の
define-record-type
でカバーされます。gauche.record
- レコード型参照。
これはR7RS largeの一部となりました。
モジュールscheme.sort
でサポートされます。
scheme.sort
- R7RSソート参照。
これはR7RS largeの一部となりました。
モジュールscheme.vector
でサポートされます。 scheme.vector
- R7RSベクタ参照。
これはR7RS largeの一部となりました。
モジュールdata.ideque
がsrfi-134と互換です。
data.ideque
- 変更不可な両端キュー参照。
これはR7RS largeの一部となりました。
Gaucheではtext型はstring型と独立してはおらず、
textは単に「変更不可でインデクスされた文字列」にすぎません。
文字列のインデクシングについては文字列索引を参照してください。
APIはscheme.text
- R7RS変更不可なテキストで説明しています。
これはR7RS largeの一部となりました。
モジュールscheme.division
でサポートされます。scheme.division
- R7RS整数除算参照。
これはR7RS largeの一部となりました。
モジュールscheme.fixnum
でサポートされます。scheme.fixnum
- R7RS fixnum参照。
これはR7RS largeの一部となりました。
モジュールscheme.flonum
でサポートされます。scheme.flonum
- R7RS flonum参照。
組み込みです。条件式参照。
これはR7RS largeの一部となりました。
モジュールscheme.mapping
でサポートされます。
scheme.mapping
- R7RSマッピング参照。
組み込みのsyntax-rules
はsrfi.149
に対応しています。
モジュールsrfi.151
でサポートされます (scheme.bitwise
- R7RSビット演算参照)。
なお、組み込みでも多くの手続きについては同等の手続きが提供されています
(基本的なビット演算参照).
モジュールsrfi.152
でサポートされます (srfi.152
- 文字列ライブラリ(簡略版)参照)。
モジュールsrfi.154
でサポートされます。(srfi.154
- 第一級の動的エクステント参照)。
これはR7RS largeの一部となりました。
モジュールscheme.generator
でサポートされます
(scheme.generator
- R7RSジェネレータ参照)。
ジェネレータ手続きのほとんどは、gauche.generator
でもサポートされています
(gauche.generator
- ジェネレータ参照)。
これはR7RS largeの一部になりました。scheme.show
- R7RS combinator formatting参照。
これはR7RS largeの一部となりました。
モジュールscheme.vector.@
でサポートされます
(但し@
はbase
,
u8
, s8
, u16
, s16
,
u32
, s32
, u64
, s64
, f32
, f64
,
c64
, c128
)。
scheme.vector.@
- R7RSユニフォームベクタ参照。
モジュールsrfi.162
でサポートされます。srfi.162
- 比較器のサブライブラリ参照。
組み込みのリーダーでサポートされています。字句構造参照。
モジュールsrfi.170
でサポートされます。srfi.170
- POSIX API参照。
モジュールsrfi.172
とsrfi.172.functional
でサポートされます。
srfi.172
- 二つの安全なR7RSサブセット参照。
モジュールsrfi.173
でサポートされます (srfi.173
- フック(srfi)参照) 。
それ自体はgauche.hook
の上にかぶせた薄いレイヤです (gauche.hook
- フック参照)。
モジュールsrfi.174
でサポートされます (srfi.174
- POSIX timespecs参照)。
Gaucheでは、timespecオブジェクトは組み込みの<time>
オブジェクトであり、
またsrfi-19のtimeオブジェクトとも共通です。
モジュールsrfi.175
でサポートされます(srfi.175
- ASCII文字ライブラリ参照)。
gosh
のコマンドライン引数としてサポートされます。
version-alist
手続きは組み込みです。
基本的なサポートは組み込みです (ビットベクタ参照)。
完全なサポートはモジュールsrfi.178
にあります(srfi.178
- ビットベクタライブラリ参照)。
モジュールsrfi.180
でサポートされます (srfi.180
- JSON参照)。
Gaucheにはrfc.json
もあって、srfi.180
は
rfc.json
の上に実装されています。
モジュールsrfi.181
でサポートされます (srfi.181
- カスタムポート参照)。
Gaucheは独自のカスタムポートメカニズムを持っており(gauche.vport
- 仮想ポート参照)、
このsrfiはその上に作られています。
モジュールsrfi.185
でサポートされます。
srfi.185
- 線形更新な可変長文字列参照。
モジュールsrfi.189
でサポートされます。
srfi.189
- MaybeとEither、オプショナルなコンテナ型参照。
Gaucheのポートは既に位置の問い合わせと設定機能を持っており、
主要な手続きは組み込みになっています(ポート共通の操作参照)。
組み込みでない追加手続きはモジュールsrfi.192
にあります
(srfi.192
- ポート位置参照)。
command-line
とscript-file
の二つの手続きは組み込みです。
他のAPIはモジュールsrfi.193
で提供されます (srfi.193
- コマンドライン参照)。
モジュールsrfi.194
でサポートされます(srfi.194
- ランダムデータジェネレータ (SRFI)参照)。
それ自体はGaucheのdata.random
を元にしています(see data.random
- ランダムデータの生成参照).
組み込みです。ボックス参照。
srfi.196
でサポートされます。また、data.range
モジュールはこのsrfiの上位互換になっています (data.range
- レンジ参照)。
モジュールsrfi.197
でサポートされます (srfi.197
- パイプラインオペレータ参照)。
バイトストリングリテラルは組み込みでサポートされます。
バイトストリングを扱う手続きはモジュールsrfi.207
で提供されます
(srfi.207
- 文字列表示のバイトベクタ参照)。
モジュールsrfi.209
でサポートされます (srfi.209
- enumとenum集合参照)。
モジュールsrfi.210
でサポートされます
(srfi.210
- 多値のための手続きと構文参照)。
モジュールsrfi.215
でサポートされます
(srfi.215
- 中央ログ交換局参照)。
モジュールsrfi.216
でサポートされます
(srfi.216
- SICP用ライブラリ参照)。
srfi.217
でサポートされます
(srfi.217
- 整数集合参照)。
Gauche組み込みのdefine
は (R7RS互換のものも拡張のものも)
この機能をサポートしています。
陽にsrfi-219をインポートした場合は、null#define
がインポートされます。
詳しくはsrfi.219
- 高階lambdaの定義参照。
srfi.221
でサポートされます
(srfi.221
- ジェネレータ/アキュムレータ サブライブラリ参照)。
srfi.222
でサポートされます
(srfi.222
- 複合オブジェクト参照)。
一部分を、組み込みとgauche.threads
モジュールでサポートしています。
詳しくはsrfi.226
- 制御機構を参照してください。
モジュールsrfi.227
でサポートされます
(srfi.227
- 省略可能引数参照)。
srfi.228
でサポートされます
(srfi.228
- 比較器の合成参照)。
srfi.229
でサポートされます。
(srfi.229
- 手続きタグ参照)。
srfi.232
でサポートされます
(srfi.232
- 柔軟なカリー化された手続き参照)。
srfi.235
でサポートされます
(srfi.235
- コンビネータ (SRFI)参照)。
組み込みです。式をまとめる参照。
srfi.238
でサポートされます
(srfi.238
- コードセット参照)。
srfi.239
でサポートされます
(srfi.239
- リストの分解参照)。
組み込みです。定義参照。
srfi.247
でサポートされます
(srfi.247
- 構文的モナド参照)。