2016-12-11 5 views
0

非字句環境でevalを使用していくつかのlispコードを評価するにはどうすればよいですか?私は適切な補間機能のためにこの機能が必要です。評価のための字句環境

+4

XY問題のような臭いがありますので、選択したソリューションに関する問題ではなく、実際の問題に質問を変更する必要があります。 – Sylwester

+0

さて、ありがとう、実際に、私はちょうどそれを行う方法がないことを確認する必要がありました。実際には、環境にアクセスする代わりに値を持つハッシュテーブルを送信することにしました。 – Seraph

答えて

1

あなたはletに見られるようなバインディングとしてご使用の環境をモデル化した場合:

(eval `(let ,e ,f)) 

:あなたがそうのように、代わりにこれらのバインディングを任意の形式fを評価することができます...

((x 3) (y 2)) 

これは最も簡単なケースですが、この構文に合わせてデータを簡単に変換できます。必要に応じて、関数、マクロなどをバインドすることもできます。

実行時に値が必要な場合は、おそらく動的バインディングが優れていることに注意してください。あなたは、ハッシュ・テーブルなどを使用していますが、そこにもあまり知られてPROGV特別な演算子であることに注意することができます他のもののうち、

Lispで埋め込み言語のための通訳を書くとき、progvが有用です。動的変数をバインドするためのメカニズムを提供します。

関連する問題