1

概要

Clojure 内の DSL としてhttp://en.wikipedia.org/wiki/E_programming_languageのようなものはありますか?

バックグラウンド

私は知っています:

環境

私はケイパビリティ システムと情報フローの両方の大ファンです。そして、これら 2 つの手法のために Clojure DSL を開発した人がいるかどうか疑問に思っています。以下が理想的です。

  • すべてのオブジェクトには、オブジェクトへの読み取りアクセス権を持つユーザーをリストするタグ (メタ テーブルなど) があります。

  • ユーザー「foo」としてクエリを実行したい場合、「今はfooの機能のみを使用する」というコンテキスト変数を設定します-その後、関数はオブジェクトに到達しようとすると、オブジェクトを取得します(fooが持っている場合)アクセスできる) または nil (foo がアクセスできない場合)。オブジェクトの存在に関する情報を漏らすことは、現時点では大したことではありません。

質問

問題は、これは Clojure DSL として簡単に実行できるものかということです。各オブジェクトにはいくつかの機能タグがあり、特定のタグの下で関数/コードの一部を実行できます。ランタイム システムは、アクセスしてはならないものに誰もアクセスできないようにします。

ありがとう!

4

1 に答える 1

2

メタデータと前提条件を使用してこれを実行し、DSL/構文を追加するマクロを作成できますが、マクロをスキップして前提条件とメタデータのみを使用することをお勧めします。

  • 各オブジェクトには、その機能のリストを含むメタデータが含まれます。
  • 各関数には、メタデータをチェックする前提条件があります。
于 2012-06-02T01:19:50.657 に答える