問題タブ [cursive]

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.

0 投票する
1 に答える
191 参照

intellij-idea - 展開エラーなしでClojureマクロを実行できません

特定のシンボルのメタデータを調べて、キーワードではないエントリを削除するマクロを作成しています。つまり、キー名が「:」で始まっていません。

「OneHundred」と「NinetyNine」のエントリを削除し、残りのメタデータはそのままにしておきたいです。

だから私は動作するコードを少し持っています:

できます。X のメタデータから「OneHundred」と「NinetyNine」のエントリが削除されました。

次に、それをマクロにコーディングします。神はREPLを祝福します。

defmacro を使用してマクロを定義すると、エラーは発生しません。
マクロの macroexpand-1 、例えば

適切なコードに展開されます。ここ:

しかし!!!

実際に REPL で実際のパラメーターを使用してマクロを呼び出すと、最も理解できないエラー メッセージが表示されます。

ああ、全能にして賢明なクロジュレゴッドよ、慈悲を乞う。私の罪はどこにありますか?