Hi,

shadowing a macro doesn't seem to work properly in all the cases:

(define-syntax my-begin (syntax-rules () ((_ x ...) (begin x ...))))
(let ((my-begin -)) (my-begin 0 1)) ; => -1 (ok)
(define my-begin -)
(apply my-begin '(0 1))             ; => -1 (ok)
(my-begin 0 1)                      ; =>  1 (oops)

Thus `my-begin' acts as either a procedure or a macro depending on the context.

Redefining `begin' (or even `##core#begin') has the same
unsatisfactory behavior:

(let ((begin -)) (begin 0 1)) ; => -1
(define begin -)
(apply begin '(0 1))          ; => -1
(begin 0 1)                   ; =>  1

Is this the expected behavior?

Regards,
Michele

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to