| パラダイム | マルチ:機能的、手続き的、メタ |
|---|---|
| 家族 | リスプ |
| デザイン: | リチャード・ケルシー、 ジョナサン・リース |
| 開発者 | リチャード・ケルシー、 ジョナサン・リース |
| 初登場 | 1987年3月 |
| 安定リリース | 1.9.2 / 2014年4月12日 |
| タイピングの規律 | ダイナミック、強力、潜在的 |
| 範囲 | 語彙 |
| OS | クロスプラットフォーム |
| ライセンス | BSDA の |
| Webサイト | s48.org |
Scheme 48はプログラミング言語であり、Scheme言語の方言であり、バイトコードを発行するインタプリタを使用した実装である。[2] C言語から関数を呼び出すための外部関数インタフェースを持ち、 [3]正規表現(regex)のライブラリが付属しており、 [4] POSIX (Portable Operating System Interface)のインタフェースも付属している。[5]ポータブルSchemeライブラリSLIBによってサポートされており、SchemeシェルScshの基礎となっている。[2]学術研究で使用されている。[6] BSDライセンスの下でリリースされた無料のオープンソースソフトウェアである。
最初のバージョンが1986年8月に48時間で書かれたため、「Scheme 48」と呼ばれています。[7]著者は現在[いつ? ]、 48時間以内に理解されることを意図していると述べています。[要出典]
実装
Scheme 48 は、仮想マシンを使用してバイトコードを解釈します。バイトコードは、PreScheme と呼ばれる Scheme の制限された方言で記述されており、C に変換してネイティブ バイナリにコンパイルできます。PreScheme (または Pre-Scheme) は、Scheme の静的型付け方言であり、C の効率性と低レベルのマシン アクセスを備えながら、Scheme の多くの望ましい機能を保持しています。
Pre-Scheme は非常に興味深いものでした。Kelsey もそれに関する論文を発表したと思います。Scheme システムにロードしてコードを実行できるという意味では Scheme でした。しかし、制限がありました。完全な Hindley-Milner 静的型推論を可能にする形式で記述する必要があり、すべての高階プロシージャはコンパイル時にベータ置換されました。つまり、pre-Scheme プログラムを C レベルの効率で「自然な」C コードに *簡単に* 変換できました。つまり、prescheme は低レベル コード用の C の本当に快適な代替手段と見なすことができます。また、prescheme は制限された Scheme にすぎなかったため、スイッチを切り替えて C コードに変換する前に、好みの対話型 Scheme 開発環境で prescheme プログラムをデバッグできました。Scheme 48 バイトコード インタプリタは prescheme で記述されました。 Preschemeは、ある意味死に絶えてしまった。Kelseyは、学術論文を書いただけで、それを文書化して、他の人が使えるような独立したツールにする時間がなかったのだ(ノースウェスタン大学のIan Horswillのグループは例外で、彼らはpreschemeを使っていた。
— オリン・シヴァーズ、「オリン・シヴァーズ:Tの歴史」[8]
参考文献
- ^ プロジェクトウェブサイトでの R5RS の主張
- ^ ab リチャード・ケルシー、ジョナサン・リース。「Scheme 48」。S48.org 。 2018年12月5日閲覧。
- ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (2008 年 1 月 10 日). 「リリース 1.8 の不完全な Scheme 48 リファレンス マニュアル: Scheme 48 と C の混在」. S48.org . 2018 年 12 月 5 日閲覧。バージョン 1.8 のマニュアルの第 8 章。
- ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (2008 年 1 月 10 日). 「リリース 1.8 の不完全な Scheme 48 リファレンス マニュアル: 正規表現」. S48.org . 2018 年 12 月 5 日閲覧。バージョン 1.8 のマニュアルの第 5 章。
- ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (2008 年 1 月 10 日). 「リリース 1.8 の不完全な Scheme 48 リファレンス マニュアル: POSIX へのアクセス」. S48.org . 2018 年 12 月 5 日閲覧。バージョン 1.8 のマニュアルの第 9 章。
- ^ call/cc の最終シフト: シフトとリセットの直接実装
- ^ Rees, Jonathan A. 「JAR のスキーム 48 ページ」。Jonathan A. Rees。Mumble.net。2018年12 月 5 日閲覧。
- ^ シヴァーズ、オリン。「オリン・シヴァーズ:Tの歴史」。PaulGraham.com 。 2018年12月5日閲覧。
外部リンク
- 公式サイト
