What happens when we define the following syntax:
(define-syntax f
(syntax-rules ()
((f a ... x . y)
(begin (begin (write a) (display " ")
(write x) (display " ")
(write y) (display " ")
(newline)) ...))))
And try to evaluate (f 10 20 30 'a 'b)?
Three results are possible:
10 b ()
20 b ()
30 b ()
a b ()
| System | result |
|---|---|
| Bigloo | error while expanding |
| Chez | error while expanding |
| Chibi | error while expanding |
| Chicken | error when defining the macro |
| Cyclone | error when defining the macro |
| Gambit | error when defining the macro |
| Gauche | accepts |
| Guile | error while expanding |
| Kawa | accepts |
| LIPS | expands to (quote (begin)) |
| Loko | error while expanding |
| MIT | accepts |
| Racket | error while expanding |
| Sagittarius | accepts |
| Scheme9 | error while expanding |
| STklos | error while expanding |
| Unsyntax | error while expanding |
| Ypsilon | error while expanding |