我正在考虑在球拍中嵌入J,因为我发现了existing project,我想在此基础上再接再厉。就像现在一样,通过传递J program string to a Racket form进行评估:
> (j "4 * 1 + 4")
> 20
由于J使用引号,双引号和其他ASCII字符作为字符串传递时需要转义,我想将评估策略更改为:
> (j 4 * 1 + 4)
> 20
这对应于评估球拍形式的cdr
,显然需要locally change the reader。但是,当我尝试将评估功能更改为:
(define (j exp)
(jeval #reader"jexp.rkt" exp))
我得到一个“未绑定的标识符”错误,因为输入端口'exp'被解释为litterally而不用'exp'替换它的值。我该如何管理?
像这样改变读者不是可以在解析过程的后期完成的事情。在你给出的例子中,Racket如何知道嵌入式J程序何时结束?
我想你想看一下“球拍指南”中的“创建语言”部分: