sum
Scheme マクロがどのように機能するかを理解するために、私は新しいコマンドを定義しようとしていますoperator +
。
私はこのコードを書きました:
(define-syntax sum
(syntax-rules ()
((_ arg1 arg2 args...)
(sum (+ arg1 arg2) args...))
((_ arg1 arg2)
(+ arg1 arg2))
((_ arg1)
arg1)))
1、2、または 3 つの引数を渡すと機能します。しかし、4つの引数を使用すると、次のエラーが発生します:
sum: bad syntax in: (sum 1 2 3 4)
DrRacket でマクロを段階的に展開しようとしましたが、すぐに停止します。
誰かがこのエラーの原因を説明できますか?