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 - 構文的モナド参照)。