For Gauche 0.9.10


Next: , Previous: , Up: 主要な概念   [Contents][Index]

2.1 標準への準拠

Gaucheは、オプショナルな構文や手続きも含め “Revised^7 Report of Algorithmic Language Scheme” (R7RS) に準拠しています。 “R7RS small” と呼ばれるコア言語(R7RS small language参照)に加え、 “R7RS large” ライブラリの一部をサポートします(R7RS large参照)。

GaucheはR7RS以前から開発されているため、既存のGaucheソースコードの多くはR7RSの プログラムやライブラリの構造に従っていないことに注意してください。 Gaucheは、伝統的なGaucheのモジュール形式やスクリプトも、R7RS形式のプログラムや ライブラリも、両方解釈することができます。 R7RSがどのようにGaucheに統合されているかについては、 ライブラリモジュール - R7RS標準ライブラリを参照してください。

Gaucheはまた、以下のSRFIをサポートしています。

SRFI-0, 機能ベースの条件展開

R7RS smallに取り込まれました。Gaucheは組み込みでサポートしています。 機能条件式参照。

SRFI-1, リストライブラリ

これはR7RS largeの一部になりました。R7RSリスト参照。 SRFI-1の手続きのうちいくつかは組み込みになっています。

SRFI-2, AND-LET*: 局所束縛をともなう AND、ガード付 LET* 特殊フォーム

組み込みです。変数束縛参照。

SRFI-4, 一様な数値ベクタ型

モジュールgauche.uvectorsrfi-4の上位互換手続きを提供します。 同モジュールにはSRFI-4の手続きに加え、 算術演算やジェネリックなインタフェースが定義されています。ユニフォームベクタ参照。

SRFI-5, シグネチャとrest引数に互換性のあるlet形式

モジュールsrfi-5でサポートされます。 シグネチャとrest引数に互換性のあるlet形式参照。

SRFI-6, 基本文字列ポート

これはR7RS smallの一部になりました。 Gaucheは組み込みでサポートしています。文字列ポート参照。

SRFI-7, 機能ベースプログラム設定言語

オートロードされるマクロとしてサポートされています。 機能ベースプログラム設定言語参照。

SRFI-8, receive: 多値束縛

構文receiveは組み込みになっています。変数束縛参照。

SRFI-9, レコード型の定義

モジュールgauche.recordでサポートされます。レコード型参照。

SRFI-10, Sharp-comma外部フォーム

組み込みです。読み込み時コンストラクタ参照。

SRFI-11, 多値を受け取るための構文

これはR7RS smallの一部になりました。Gaucheは組み込みでサポートしています。 変数束縛参照。

SRFI-13, 文字列ライブラリ

モジュールsrfi-13でサポートされます。文字列ライブラリ参照。 (SRFI-13の手続きのいくつかは組み込みになっています。)

SRFI-14, 文字集合のライブラリ

これはR7RS largeの一部になりました。 文字集合と基本的な手続きは組み込みになっています。 文字集合参照。 SRFI-14の完全なサポートはモジュールscheme.charset で提供されています。R7RS文字集合参照。

SRFI-16, 可変長引数手続き構文 (case-lambda)

これはR7RS smallの一部になりました。 組み込みです。手続きを作る参照。

SRFI-17, 一般化された set!

組み込みです。代入参照。

SRFI-18, マルチスレッドのサポート

いくつかのSRFI-18の機能は組み込みであり、、残りのAPIは gauche.threadsモジュールで提供されます。スレッド参照。

SRFI-19, 時間データの型と手続き

時間のデータ型はGauche組み込みです(時間参照)。 SRFI-19の完全なサポートはモジュールsrfi-19で提供されています。 時間のデータ型と手続き参照。

SRFI-22, UNIX 上の Scheme スクリプトの実行

サポートされています。Schemeスクリプトを書く参照。

SRFI-23, エラー報告機構

これはR7RS smallの一部になりました。 組み込みです。例外の通知参照。

SRFI-25, 多次元配列のプリミティブ

モジュールgauche.arrayが、SRFI-25の上位互換と なっています。配列参照。

SRFI-26, カリー化をともなわないパラメータの特殊化記法。組み込みです。

手続きを作る参照。

SRFI-27, ランダムビットのソース

モジュールsrfi-27でサポートされます。ランダムビットのソース参照。

SRFI-28, 基本フォーマット文字列

Gauche組み込みのformatがSRFI-28のものの上位互換に なっています。出力参照。

SRFI-29, 地域化

モジュールsrfi-29でサポートされます。 地域化参照。

SRFI-30, ネストした複数行コメント

これはR7RS smallの一部になりました。 ネイティブのリーダでサポートされています。字句構造参照。

SRFI-31, 再帰評価用の特殊フォームrec. 組み込みです。

変数束縛参照。

SRFI-34, プログラムの例外処理

これはR7RS smallの一部になりました。 組み込みです。例外参照。 (但し、Gaucheはraiseに関してはsrfi-18のセマンティクスを文字通り 実装していて、それはsrfi-34と若干異なります。将来はsrfi-34に合わせるかもしれません。)

SRFI-35, コンディション

組み込みです。コンディション参照。

SRFI-36, I/O コンディション

部分的にサポートされています. コンディション参照。

SRFI-37, args-fold: プログラム引数処理

モジュールsrfi-37でサポートされます。 args-fold プログラム引数処理参照。

SRFI-38, 共有されるデータの外部表現

組み込みです。データの読み込み出力参照。

SRFI-39, パラメータオブジェクト

これはR7RS smallの一部になりました。 組み込みです。パラメータ参照。

SRFI-40, ストリームライブラリ

モジュールutil.streamでサポートされています。 See ストリームライブラリ.

SRFI-41, ストリーム

これはR7RS largeの一部になりました。R7RSストリーム参照。 ストリーム手続きのほぼ全てはutil.streamからも提供されています (ストリームライブラリ参照)。

SRFI-42, 先行評価的内包表記

モジュールsrfi-42でサポートされます。 先行評価的内包表記参照。

SRFI-43, ベクタライブラリ

モジュールsrfi-43でサポートされます。 ベクタライブラリ(旧式)参照。 註:このsrfiはR7RSのscheme.vectorライブラリ (srfi-133として導入されたもの)により置き換えられました。 R7RSベクタ参照。

SRFI-45, 反復的 Lazy アルゴリズムのための基本関数

組み込みです。 See 遅延評価.

SRFI-46, 基本的なsyntax-rulesの拡張

これはR7RS smallの一部となりました。 組み込みです。 See 衛生的マクロ.

SRFI-55, requireの拡張

オートロードマクロとしてサポートされます。 Requiring extensions参照。

SRFI-60, 整数に対するビット操作

ほとんどの手続きは組み込みになっています。R7RSビット演算参照。 完全なサポートはsrfi-60モジュールで提供されます。 整数に対するビット操作参照。

SRFI-61, より汎用的なcond

組み込みです。条件式参照。

SRFI-62, S式コメント

これはR7RS smallの一部となりました。 ネイティブのリーダでサポートされています。字句構造参照。

SRFI-64, テストスイートのためのScheme API

モジュールsrfi-64でサポートされます。SchemeテストスイートAPI参照。

SRFI-66, オクテットベクタ

モジュールsrfi-66でサポートされます (オクテットベクタ参照)。 ほぼgauche.uvectorのサブセットですが、 一ヶ所だけ違いがあります。

SRFI-69, 基本的なハッシュテーブル

モジュールsrfi-69でサポートされます (基本的なハッシュテーブル参照)。 このsrfiはR7RSのscheme.hash-table (srfi-125として導入されたもの) で置き換えられました。 詳しくはR7RSハッシュテーブルを参照してください。

SRFI-74, オクテット毎にアクセス可能なバイナリブロック

モジュールsrfi-74でサポートされます (Octet-addressed binary blocks参照)。

SRFI-78, 軽いテストフレームワーク

モジュールsrfi-78でサポートされます。 gauche.testと一緒に使うこともできます。軽量なテスト参照。

SRFI-87, case節での=>

これはR7RS smallの一部となりました。 組込みです。条件式参照。

SRFI-95, ソートとマージ

組み込みです。ソートとマージ参照。

SRFI-96, SLIB必要事項

このsrfiはライブラリというよりは、SLIBをサポートするためにプラットフォームが 提供しなければならない機能要件を記述するものです。このモジュールをロードするためには、 SLIBが既にインストールされていることが必要です。 詳しくはSLIBインタフェースを参照してください。

SRFI-98, 環境変数にアクセスするためのインタフェース

モジュールsrfi-98でサポートされます。環境変数へのアクセス参照。

SRFI-99, ERR5RS レコード

モジュールgauche.recordでサポートされます。レコード型参照。

SRFI-101, 純粋に関数的でランダムアクセス可能なペアとリスト

これはR7RS largeの一部となりました。 モジュールscheme.rlistでサポートされます。

SRFI-106, 基本的なソケットインタフェース

モジュールsrfi-106でサポートされます。基本的なソケットインタフェース参照。

SRFI-111, ボックス

これはscheme.boxとしてR7RS largeの一部となりました。 Gaucheは組み込みでサポートしています。ボックス参照。

SRFI-112, 環境の問い合わせ

モジュールsrfi-112でサポートされます。 ポータブルな実行環境の問い合わせ参照。

SRFI-113, セットとバッグ

これはR7RS largeの一部となりました。 モジュールscheme.setでサポートされます。 R7RSセット参照。

SRFI-114, 比較器

いくつかの機能は組み込みです(基本的な比較器参照)。srfiの完全な仕様はモジュールsrfi-114でサポートされます(比較器参照)。

SRFI-115, Scheme正規表現

これはR7RS largeの一部となりました。 モジュールscheme.regexでサポートされます。R7RS正規表現参照。

SRFI-116, 変更不可リストのライブラリ

これはR7RS largeの一部となりました。 変更不可なペアはGauche本体で直接サポートされます(変更可能なペアと変更不可なペア参照)。 フルセットのAPIは モジュールscheme.ilistでサポートされます(R7RS変更不可リスト参照)。

SRFI-117, リストを元にしたキュー

これはR7RS largeの一部となりました。 data.queue上に実装されたモジュールscheme.list-queueでサポートされます。 (R7RSリストキュー参照)

SRFI-118, 簡単な可変長文字列

モジュールsrfi-118でサポートされます。 (簡単な可変長文字列参照)

SRFI-121, ジェネレータ

これはR7RS largeの一部となりました。 Gaucheのgauche.generatorがsrfi-121のスーパーセットになっています。 (ジェネレータ参照)

SRFI-124, Ephemeron

これはR7RS largeの一部となりました。 scheme.ephemeronモジュールでサポートされます (註: 現在のGaucheでの実装は理想的ではありません。) R7RS Ephemeron参照。

SRFI-125, ハッシュテーブル中位層

これはR7RS largeの一部となりました。 scheme.hash-tableモジュールでサポートされます (R7RSハッシュテーブル参照)。 Gaucheの組み込みインタフェースも同じ機能を提供していますが、 既存のコードとの互換性のために名前が若干異なります (ハッシュテーブル参照)。

SRFI-127, 遅延シーケンス

これはR7RS largeの一部となりました。 scheme.lseqモジュールでサポートされます。 R7RS遅延シーケンス参照。

SRFI-128, 比較器 (縮小版)

これはR7RS largeの一部となりました。 組み込みです。基本的な比較器参照。

SRFI-129, Titlecase手続き

char-title-case?char-titlecaseは組み込みで、 string-titlecasegauche.unicodeモジュールにあります。 互換性のため、(use srfi-129)(import (srfi 129))とすれば この3つの手続きがインポートされます。

SRFI-130, カーソルベースの文字列ライブラリ

文字列カーソルは組み込みでサポートされています (文字列カーソル参照)。 また、多くの組み込みおよびsrfi-13手続きはインデックスに加えてカーソルも 取れるようになっています。モジュールsrfi-130は、srfi-13と同名だけれど インデックスの代わりにカーソルを返す手続きを提供します (Cursor-based string library参照)。

SRFI-131, ERR5RSレコード構文 (簡易版)

このsrfiはsrfi-99のサブセットで、gauche.recorddefine-record-typeでカバーされます。レコード型参照。

SRFI-132, ソートライブラリ

これはR7RS largeの一部となりました。 モジュールscheme.sortでサポートされます。 R7RSソート参照。

SRFI-133, ベクタライブラリ (R7RS互換)

これはR7RS largeの一部となりました。 モジュールscheme.vectorでサポートされます。 R7RSベクタ参照。

SRFI-134, 変更不可な両端キュー

これはR7RS largeの一部となりました。 モジュールdata.idequeがsrfi-134と互換です。 変更不可な両端キュー参照。

SRFI-135, 変更不可なテキスト

これはR7RS largeの一部となりました。 Gaucheではtext型はstring型と独立してはおらず、 textは単に「変更不可でインデクスされた文字列」にすぎません。 文字列のインデクシングについては文字列索引を参照してください。 APIはR7RS変更不可なテキストで説明しています。

SRFI-141, 整数除算

これはR7RS largeの一部となりました。 モジュールscheme.divisionでサポートされます。R7RS整数除算参照。

SRFI-143, Fixnums

これはR7RS largeの一部となりました。 モジュールscheme.fixnumでサポートされます。R7RS fixnum参照。

SRFI-144, Flonums

これはR7RS largeの一部となりました。 モジュールscheme.flonumでサポートされます。R7RS flonum参照。

SRFI-145, アサンプション

組み込みです。条件式参照。

SRFI-146, マッピング

これはR7RS largeの一部となりました。 モジュールscheme.mappingでサポートされます。 R7RSマップ参照。

SRFI-149, 基本的なsyntax-rulesの拡張

組み込みのsyntax-rulessrfi-149に対応しています。

SRFI-151, ビット演算

モジュールsrfi-151でサポートされます (R7RSビット演算参照)。 なお、組み込みでも多くの手続きについては同等の手続きが提供されています (基本的なビット演算参照).

SRFI-152, 文字列ライブラリ(簡略版)

モジュールsrfi-152でサポートされます (文字列ライブラリ(簡略版)参照)。

SRFI-154, 第一級の動的エクステント

モジュールsrfi-154でサポートされます。(第一級の動的エクステント参照)。

SRFI-158, ジェネレータとアキュムレータ

これはR7RS largeの一部となりました。 モジュールscheme.generatorでサポートされます (R7RSジェネレータ参照)。 ジェネレータ手続きのほとんどは、gauche.generatorでもサポートされています (ジェネレータ参照)。

SRFI-159, コンビネータによるフォーマッタ

これはR7RS largeの一部になりました。R7RS combinator formatting参照。

SRFI-160, 均質な数値ベクタライブラリ

これはR7RS largeの一部となりました。 モジュールscheme.vector.@でサポートされます (但し@base, u8, s8, u16, s16, u32, s32, u64, s64, f32, f64, c64, c128)。 R7RSユニフォームベクタ参照。

SRFI-162, 比較器のサブライブラリ

モジュールsrfi-162でサポートされます。比較器のサブライブラリ参照。

SRFI-170, POSIX API

モジュールsrfi-170でサポートされます。POSIX API参照。

SRFI-173, フック

モジュールsrfi-173でサポートされます (フック(srfi)参照) 。 それ自体はgauche.hookの上にかぶせた薄いレイヤです (フック参照)。

SRFI-174, POSIX Timespec

モジュールsrfi-174でサポートされます (POSIX timespecs参照)。 Gaucheでは、timespecオブジェクトは組み込みの<time>オブジェクトであり、 またsrfi-19のtimeオブジェクトとも共通です。

SRFI-175, ASCII文字ライブラリ

モジュールsrfi-175でサポートされます(ASCII文字ライブラリ参照)。

SRFI-176, バージョンフラグ

goshのコマンドライン引数としてサポートされます。 version-alist手続きは組み込みです。

SRFI-178, ビットベクタライブラリ

基本的なサポートは組み込みです (ビットベクタ参照)。 完全なサポートはモジュールsrfi-178にあります(ビットベクタライブラリ参照)。

SRFI-180, JSON

モジュールsrfi-180でサポートされます (JSON参照)。 Gaucheにはrfc.jsonもあって、srfi-180rfc.jsonの上に実装されています。

SRFI-181, カスタムポート

モジュールsrfi-181でサポートされます (カスタムポート参照)。 Gaucheは独自のカスタムポートメカニズムを持っており(仮想ポート参照)、 このsrfiはその上に作られています。

SRFI-185, 線形更新な可変長文字列

モジュールsrfi-185でサポートされます。 線形更新な可変長文字列参照。

SRFI-189, MaybeとEither: オプショナルなコンテナ型

モジュールsrfi-189でサポートされます。

SRFI-192, ポート位置

Gaucheのポートは既に位置の問い合わせと設定機能を持っており、 主要な手続きは組み込みになっています(ポート共通の操作参照)。 組み込みでない追加手続きはモジュールsrfi-192にあります (ポート位置参照)。

SRFI-193, コマンドライン

command-linescript-fileの二つの手続きは組み込みです。 他のAPIはモジュールsrfi-193で提供されます (コマンドライン参照)。

SRFI-195, 多値ボックス

組み込みです。ボックス参照。


Next: , Previous: , Up: 主要な概念   [Contents][Index]