問題タブ [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.

0 投票する
2 に答える
82 参照

common-lisp - マクロ定義マクロでの引用

struct-of-arrays データ構造のヘルパーを定義するマクロを作成しようとしています (このスニペットに基づいています)。そのマクロ内で、構造体のすべてのスロット値をトラバースするのに役立つ別のマクロを定義します。問題は、二重引用符の解除を適切に機能させることができないということです。コードは次のとおりです。

たとえば、(defcomponent buzz x y)マクロは次のように展開します

componentsこれはちょっと機能しますが、内部with-buzzマクロのパラメーターにアクセスしたい、つまりこのようなものです

どうすればそれを達成できますか?と の組み合わせをたくさん試しましたが、うまくいきませ,,@でした。

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

macros - この Common Lisp マクロが機能しないのはなぜですか? 本の解答用紙は間違っていますか?

Common Lisp という本でCommon Lisp を学ぼうとしています。さらに、SBCL、Emacs、Slime を使用しています。

最後の第 14 章では、著者はマクロについて説明します。次の問題が提示されます。

VARIABLE-CHAIN任意の数の入力を受け入れるというマクロを作成します。式は、 to 、to 、およびtoに(VARIABLE-CHAIN A B C D)設定される式に展開する必要があります。A’BB’CC’D

解答用紙は次のとおりです。

ここに画像の説明を入力

PDFからコピーしてここに貼り付けます:

Emacs では、このハックを使用してスマート クォートを削除しました。それを Emacs に貼り付けると、次のようになります。

残念ながら、Slime の REPL にコンパイルできず、エラーがスローされます。

私はに変更しようとし'(prognました:

しかし、それも機能しませんでした: "comma not inside a backquote".

私は何か間違ったことをしましたか?それとも解答用紙が間違っていますか?

ありがとう。