←dps
このページには、dps上で動かす事になるLisp処理系の仕様について記述する。
メモ
- opおよびfnが必要とする、「環境」の扱いをどうするか決める必要がある
- とりあえず、データ形式としては、alistでいいのでは?
- 「環境」の実体も、dpsそのものを利用する
- evalの実装自体は、後回しでよいので、これの確定も後回しでもよい(が、最終的には決める必要はある)
- 「環境」に必要なもの一覧
- 変数束縛リスト
- 継続(入れ子可能である必要あり)
- (後述の)実行ステップカウントおよびハンドラ(入れ子可能である必要あり)
- current-*-port系(これは無しにする可能性あり)
- 他には?
- dps上で実行するLisp処理系の仕様を決める必要がある
- これは大きくなるので、あとで別ページを作る事
- プリミティブとして用意するopおよびfnは、ニーモニック的な名前をつける
- 遅延評価(遅延リスト)ベースにするかどうかはまだ迷い中。でも最低でも遅延ロードは行う事になる
- 並行実行を行うopをプリミティブで用意する必要あり
- 純粋関数型ではないが、副作用を持つ操作をかなり限定する方針で
- zeromq問い合わせ/デバイス生成をプリミティブに行える必要あり
- resource sensitiveである必要あり
- 実行ステップ数的には、そこそこ厳密にresource sensitiveである必要がある(並行実行前提の為)
- これ(実行ステップ数限界)を参照/設定(ハンドラ等含む)できるop/fnを提供する事
- メモリ空間的には、厳密にresource sensitiveである必要はそれほどない(一度のop実行で爆発的にメモリを消費するようなopさえなければ、メモリを消費するには実行ステップも消費しないといけないので、そっちで制限すれば問題がない)
- この処理系での「評価」(計算)は、dpsサーバで行われるの?それとも、dpsクライアントで行われる?
TODO
最終更新 : 2011/03/23 09:21:23 JST