このWIKIを編集するにはパスワード入力が必要です

認証パスワード
RSSフィード

Fantasy リリースに向けたアイディアメモ

メモ化の有効範囲は OPEN マイクロ命令群への進入から脱出までです。特に、メモ化が有効かどうか調べるインストラクションの直後からメモ化を有効にすればきれいにできそうです。終了はたぶん destruct_indirect のところです。

プリミティブ演算を登録するインターフェイスは1個になります。引数に動的環境を取りますが、いらなければ NULL を与えてください。あと、述語部の値と名前付き引数の値は専用の引数から取るべきであって、動的環境から直接取ってはいけません。

ピリオドは名前に使用できなくなります。姓 H, B および D はそれぞれ 16 進法、2 進法、10 進法です。いずれも自然数(分母 1 の有理数)になります。姓が system で固有名が数字で始まると 10 進法の自然数です。中括弧で囲まれた文字列は浮動小数点数で、たぶん scanf 関数族 の %e 指定をそのまま使います。いずれの場合にも、変換に失敗したら false になります。

テキストの内部表現は有理数の配列です。C の putc, getc 関数族は int 型をとるので分子をそのまま使えばいいですが、printf はちょっと困る。なくていいならそれで。

[condition: if () then () else ()] は引数の評価を後回しにする特殊な読み出し演算です。コンパイル時に専用のインストラクションになります。

ついにコンパイラと仮想マシンが同じバイナリになります。こんな宣言です。

struct program *read_program
  (int argc, char *argv [], int *arg_offset)

arg_offset はパステルステッチのプログラムに渡すコマンドライン引数の開始インデックスです。参照渡しです。NULL だと参照渡しをせずに捨てます。

任意のデータを格納する型ができます。名前は extend またはその派生語。C の void ポインタを保持している weak link の発展系です。void ポインタのほかに、コピー関数とデリート関数へのポインタを持っています。

ファイルポインタのコンストラクタとデストラクタをどうするべきか議論です。意味論としてはファイルを開くと閉じるに対応するべきです。

リジュームは引数にコンティニュエーション型の単独データを取るべきです。ベクトルやその名前、もしくは動的環境を取るよりもきれいになりそうです。コンティニュエーション型のものはあらかじめ何らかのプリミティブ演算で基底言語に渡しておきます。

特殊なコンテクストはサブルーチン呼び出しの引数で上書きできません。

特殊値 phantom は廃止されるかもしれません。記憶領域を解放するプリミティブ演算 erase と、記憶領域が使われているかを判定する演算(名称未設定)を新設します。後者は手続きとプリミティブ演算の登録についても使用できます。

動的環境の固有ベクトルは、プログラムの開始時またはコンティニュエーションの作成時に作られ、動的環境にホールドされます。コンティニュエーションのコピーでは固有ベクトルは作成されず、既存の固有ベクトルのコピーとホールドが行われるだけです。

プログラムの開始時に作られる無名ベクトル、とりあえず初期化ベクトルという名前です。最初の動的環境にホールドされます。動的環境のコピー(コンティニュエーションの作成、コピーを含む)時に初期化ベクトルもコピー、ホールドされます。

コンティニュエーションから固有ベクトルを取り出すプリミティブ演算(名称未設定)を作ります。引数を省略すると、現在実行している(仮想マシンにマウントされている)動的環境から固有ベクトルを取り出します。オプションで、プログラムの開始時に作られる固有ベクトル(初期化ベクトル)を得ます。サブルーチン呼び出しのコンテキストは文脈変数でないといけないと思いますが、こっちはプリミティブ演算でいいんじゃないかな。

ローカル化継承はサブルーチンのローカル化ベクトル(サブルーチンの固有ベクトルと言ってもいいんじゃないか)を使い果たしたら、動的環境の固有ベクトル、プログラムの初期化ベクトルへと進みます。最後は零ベクトルになります。

ターシャリーはたぶんの名前にもどります。プログラムは ^code で始まり空行で終わります。空行は 0 個以上の ASCII のスペースまたは水平タブのみからなる行です。

パステルステッチのレクネクラプテ (人工言語) での名前は epteflae tolemiste であると規定されそうになりましたが、kiptea flasmi という似たような名前になるかもしれません。



  • 最終更新:2009-11-13 17:00:05