問題タブ [hygiene]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - `quote` マクロはどのように補間を達成しますか?
quote
(宣言型) マクロと(手続き型) マクロはどのようproc_quote
にローカル変数の補間を可能にしますか?
(宣言型) マクロは衛生的であるため、呼び出された環境にアクセスできないと予想されます。
macros - Racket - 構文トランスフォーマーと通常のコードの両方で使用できる関数を定義する方法は?
Racket でマクロを定義するために構文トランスフォーマーを使用しています。構文を操作するのに役立つヘルパー関数をいくつか作成したいと考えています。ただし、構文トランスフォーマーの外部で定義した関数は、構文トランスフォーマー内では使用できません。たとえば、次のコードでは
エラー "my-function: reference to an unbound identifier at phase: 1; the Transformer environment" が表示されました。
いくつかの検索の後、次のコードを記述してmy-function
、構文トランスフォーマー内で使用できるようにしました。
しかし問題は、my-function
今回はシンタックス トランスフォーマー以外では使用できないことです。通常のコードでこれらのヘルパー関数をチェックしたい場合があるため、 function と同様に、構文トランスフォーマーの内側と外側の両方から呼び出すことができる必要がありますcadr
。どうすればそれを達成できますか?
私の質問が Racket の構文モデル、特に「フェーズ レベル」の概念に関係していることは知っていますが、実際には理解できません。それを説明するわかりやすいチュートリアルを提供できれば、さらに感謝します.