私は、リフレクションに関する推論、つまり実行中のプログラムのイントロスペクションと操作をサポートする簡単な計算を探しています。
型なしの -calculus拡張機能があり、これを使用して -termsを構文的に操作し、後で評価できる形式に変換できますか?λ
微積分には2つの主な追加用語があると思います。
- :を取り、構文操作に修正可能な表現を生成します。v
- :用語の構文表現を取り、それを評価します。
リフレクションをサポートするには、用語の構文表現が必要です。次のようになります。
- (L A M R (e ))R (e )e用語として表現される、 の反射バージョンであり、、
- (A P P R (e )R (e ′))用語として表現される、および
- (V A R x )はとして表されます。
この表現では、パターンマッチングを使用して用語を操作できます。
しかし、問題が発生します。とは、パターンマッチングと同様に、用語としてエンコードする必要があります。、、およびを追加するのは簡単なようですが、これらの操作をサポートするために他の用語を追加する必要がありますか?e v a l R E F L E C T E V A L M A T C H
設計の選択が必要です。上記の関数は、およびの本体で何をすべきでしょうか?は体を変換すべきかどうか?r e f l e c t e v a l R (− )
私は反射自体の研究にあまり興味がないので、微積分は他の研究の手段として役立つでしょう-私は車輪を再発明したくありません。
説明した内容に一致する既存の計算式はありますか?
私の知る限り、コメントで提案されたMetaMLなどの計算は大いに役立ちますが、既に構築されているコードフラグメントをパターンマッチおよび分解する機能は含まれていません。
私ができることの1つは、次のことです。
次に、結果に対してパターンマッチングを実行して、まったく異なる式を作成します。
これは確かに -calculusの保守的な拡張ではなく、メタ理論は見苦しいかもしれませんが、これは私のアプリケーションにとっては一種のポイントです。 -abstractions を分解したい。λ