我正在尝试在 Racket 中执行以下 R5RS 代码:
#lang r5rs
(define boo 100)
(define lib `(begin 88 99 99 ,boo))
(eval lib (interaction-environment))
但是,这会导致错误:
begin: unbound identifier;
also, no #%app syntax transformer is bound
at: begin
in: (begin 88 99 99 100)
在普通球拍中,我可以使用命名空间锚来解决这个问题,如下所示:
#lang racket
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define boo 100)
(define lib `(begin 88 99 99 ,boo))
(eval lib ns)
但由于 R5RS 没有 定义命名空间锚点,我无法以这种方式解决它。如何修改 R5RS 环境以使原始代码正常工作?