-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Yamasaki Tatsuya edited this page Aug 15, 2019
·
39 revisions
Meevax は Lisp-1 に分類されるプログラミング言語です。
言語機能の大半が R7RS Scheme そのままに実装されており、基本的な使い勝手もそれに準じています。 しかし、開発者の美的感覚に基づいて導入された少なくない数の非互換要素が存在しており、本文書はその解説を目的としています。
大雑把に言って、言語コアは以下の必要最小限度の機能のみを持ちます。
- オブジェクト外部表現の内部表現化
- オブジェクト内部表現の外部表現化
- SECD 仮想マシンおよび、そのコンパイラ
- 残りのすべての言語機能を構築するために必要なプロシージャおよびスペシャルフォーム
- ダイナミックリンカ
純粋な言語コアが提供するプロシージャおよびスペシャルフォームを以下に列挙します。 この内容は言語仕様がある程度固まるまで、頻繁に増えたり減ったりします。
バインディング | 効果 |
---|---|
begin | 逐次実行 |
call-with-current-continuation | 与えられたプロシージャを現在の継続を引数として起動する |
define | 変数定義 |
environment | 環境コンストラクタ |
if | 条件分岐 |
lambda | クロージャコンストラクタ |
quote | オブジェクト外部表現のリテラル化 |
set! | 代入 |
すべてのリストはペア型から構築されます。