問題タブ [backquote]
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.
common-lisp - マクロ定義マクロでの引用
struct-of-arrays データ構造のヘルパーを定義するマクロを作成しようとしています (このスニペットに基づいています)。そのマクロ内で、構造体のすべてのスロット値をトラバースするのに役立つ別のマクロを定義します。問題は、二重引用符の解除を適切に機能させることができないということです。コードは次のとおりです。
たとえば、(defcomponent buzz x y)
マクロは次のように展開します
components
これはちょっと機能しますが、内部with-buzz
マクロのパラメーターにアクセスしたい、つまりこのようなものです
どうすればそれを達成できますか?と の組み合わせをたくさん試しましたが、うまくいきませ,
ん,@
でした。
macros - この Common Lisp マクロが機能しないのはなぜですか? 本の解答用紙は間違っていますか?
Common Lisp という本でCommon Lisp を学ぼうとしています。さらに、SBCL、Emacs、Slime を使用しています。
最後の第 14 章では、著者はマクロについて説明します。次の問題が提示されます。
VARIABLE-CHAIN
任意の数の入力を受け入れるというマクロを作成します。式は、 to 、to 、およびtoに(VARIABLE-CHAIN A B C D)
設定される式に展開する必要があります。A
’B
B
’C
C
’D
解答用紙は次のとおりです。
PDFからコピーしてここに貼り付けます:
Emacs では、このハックを使用してスマート クォートを削除しました。それを Emacs に貼り付けると、次のようになります。
残念ながら、Slime の REPL にコンパイルできず、エラーがスローされます。
私はに変更しようとし'(progn
ました:
しかし、それも機能しませんでした: "comma not inside a backquote"
.
私は何か間違ったことをしましたか?それとも解答用紙が間違っていますか?
ありがとう。