Мы используем версию схемы r5rs, пытающуюся проверить указатель процедуры на тип, на который он указывает.
Мы создали объект, используя:
(define (%macro name exp env)
(define (set-exp new_exp) (set! exp new_exp))
(define (set-env new_env) (set! env new_env))
(define (set-name new_name) (set! name new_name))
(define (%dispatch call)
(cond
((eq? call 'get-exp) exp)
((eq? call 'get-env) env)
((eq? call 'get-name) name)
((eq? call 'set-exp) set-exp)
((eq? call 'set-env) set-env)
((eq? call 'set-name) set-name)
))
%dispatch
)
Затем мы хотим проверить ссылку на процедуру, чтобы определить, указывает ли она на функцию отправки в другой части кода:
(define (macro? exp)
(eq? %macro exp)
)
Похоже, это не работает. Как правильно проверить указатель, если он указывает на макрообъект (действительно, процедура отправки)?
Любая помощь очень ценится:)