Scheme Ghulum使用什么方案?

Scheme Ghulum使用什么方案?,scheme,racket,Scheme,Racket,我正试图通过Abdulaziz Ghuloum的作品来完成我的作品。它似乎是从一个完整的课程/研讨会的期望中缩写出来的,所以我试着自己来填充这些片段 例如,我曾尝试在R5RS风格的DrScheme中使用他的测试框架,但它似乎不喜欢宏: src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket 我已经阅读了他关于本课程的介绍论文,其中对所使用的技术进行了详细的概述,并提到了一些方案,这些方案的

我正试图通过Abdulaziz Ghuloum的作品来完成我的作品。它似乎是从一个完整的课程/研讨会的期望中缩写出来的,所以我试着自己来填充这些片段

例如,我曾尝试在R5RS风格的DrScheme中使用他的测试框架,但它似乎不喜欢宏:

src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
我已经阅读了他关于本课程的介绍论文,其中对所使用的技术进行了详细的概述,并提到了一些方案,这些方案的特点可能是为了获得“额外学分”,但他没有提到他在本课程中使用的方案

更新

我仍在深入研究最初的问题(调查下面Eli建议的Petit方案),但发现了一个与Gholoum工作相关的有趣链接,因此我将其包括在这里

[Ikarus Scheme](是Ghulum想法的实际实现,似乎是他的博士工作的一部分。它应该是R6RS的首批实现之一。我现在正在尝试安装,但配置脚本不想识别我的系统安装的libgmp。因此,我的问题仍然没有解决

示例

下面的示例似乎在PLT2.4.2中使用相当大的

(require lang/plt-pretty-big)

(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm") 
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm") 
(define (emit-program x) 
  (unless (integer? x) (error "---")) 
  (emit " .text") 
  (emit " .globl scheme_entry") 
  (emit " .type scheme_entry, @function") 
  (emit "scheme_entry:") 
  (emit " movl $~s, %eax" x) 
  (emit " ret")
  )
试图用#lang scheme替换require指令将导致错误消息

foo.scm:7:3: expand: unbound identifier in module in: emit
这似乎是由于加载tests-driver.scm失败造成的。尝试使用#lang r6rs会禁用REPL,这是我非常想使用的,因此我将尝试继续使用相当大的


我要感谢Eli Barzilay的耐心帮助。

他使用的语言很可能是Chez Scheme。无论如何,PLT中的R5RS语言是R5RS的一个非常严格的版本,带有方括号之类的扩展,会抛出错误——使用默认的
#lang Scheme
语言,您可能会获得更多里程。(或者,如果失败了,试试看你是否可以使用免费版的Petit。)

你可以看到在Ubuntu x86上运行它的安装说明


Petite Scheme的安装下载是。

在严格的R5R中[]真的是非法的吗?我以为它们只是被指定为与()行为相同。(稍后)是的,第7.2节没有提到[],只是()。所以我猜它们是非法的。是的,它们总是为“未来扩展”保留的,并且与“()”相同R6RS中的s。无论如何,有几种方案都有这样的扩展,但对PLT R5RS语言的普遍要求是将其变得非常严格。Eli,谢谢你的建议。我正在探索Petite方案,尽管我的Linux盒存在库问题。也许我在家里用Mac会更走运。有人成功安装了Ikarus吗?我假设,从Ghuloum先生开始,它可以容忍[]。好吧,是的——使用Ikarus可能更好,但不一定。(IIRC,他在那之后不久就开始研究Ikarus。)至于[]s,它显然会处理它们,因为它是R6RS。但是如果你坚持这样做,那么为什么不尝试PLT呢,因为你已经安装了它并且[]这是一种自然的工作模式……我刚刚在我的家用机器上升级到PLT2.4.2(早期版本是2.1.x),并尝试切换到相当大:(需要lang/PLT相当大);因为模块和R5R都有括号的问题,而且它的表现似乎更好。但是R6R没有菜单选择。而且,新版本的Chez Scheme可能会破坏一些东西,所以即使使用Chez Scheme,涉及宏和模块的旧东西也可能不起作用。我同意,我使用github repo和Petite Chez Scheme来完成e教程,测试只需很少的修改。