1

特定のマクロは、その本体で各式を実行し、各式の間にアトムをインターリーブし、結果を収集します。

これはハードコードされた式ではうまく機能しますが、一連の式を動的に生成してマクロ呼び出しの本体に挿入したい場合、それは明らかに機能しません。なぜなら、それはマクロが実行した後に評価されるからです仕事。

解決策は、必要な式を生成する独自のマクロを作成することだと思いますが、それが外側のマクロの前に評価されるかどうかはわかりません。

私はこのようなことを試みましたが、うまくいきませんでした:

(mac genexpr (list)
  (map (fn (e) `(something ,e)) list))
4

1 に答える 1

6

begin(scheme) またはprogn(common lisp) フォームを使用してみてください。arc を使用しているようですdo

(mac genexpr (list)
  `(do ,@(map (fn (c) `(something ,e)) list)))
于 2011-08-19T06:58:46.500 に答える