2

The Scheme Programming Language のマクロ部分を読んでいるときに、 を使用して構文拡張を定義しようとしている場合はdefine-syntax、 を使用pat ...してパターンにゼロ以上の式を指定する必要があると書かれています。1つ以上の式を意味する...ゼロ以上の式を使用しないのはなぜですか?pat ...

また、著者がand次のように定義する場合:

(define-syntax and
  (syntax-rules ()
    [(_) #t]
    [(_ e) e]
    [(_ e1 e2 e3 ...)
     (if e1 (and e2 e3 ...) #f)]))

次のように書いてみませんか。

(define-syntax and
  (syntax-rules ()
    [(_) #t]
    [(_ e) e]
    [(_ e1 e2 ...)
     (if e1 (and e2 ...) #f)]))

この定義をいくつかのケースでテストしましたが、問題は見つかりませんでした。

4

1 に答える 1