我正在尝试恢复一个用 Scheme(PLT-Scheme,使用mzscheme
解释器(?)命令行工具)编写的旧(1999 年或更早)项目。更糟糕的是,我不知道 Scheme 或 Lisp(其实我也想学,但那是另一回事了)。
我有该项目的源代码:
现在,在运行代码时,它会退出并显示如下错误消息:
Sherman runtime version 0.5
Hosted on MzScheme version 52, Copyright (c) 1995-98 PLT (Matthew Flatt)
reference to undefined identifier: list->block
(我尝试过PLT-Scheme版本52、53、103、103p1。早期版本不允许mzscheme -L
选项,sherman.bat
在项目中使用的脚本中引用了该选项。后来的版本在代码或选项方面也存在一些更严重的问题。 )
困难在于,据我所见,list->block
实际上已定义-请参见:collects/sherman/BLOCK.SS
第 48 行。那么,有什么问题呢?
要运行代码,我执行以下步骤:
- 下载 PLT-Scheme v. 103p1(从旧版本下载页面- 首先关闭“PLT Scheme is now Racket”横幅) - 对于 Windows,使用:mz-103p1-bin-i386-win32.zip。
- 解压缩(例如到目录
c:\PLT
)。 - 将包含内容的目录复制
c:\sherman\collects\sherman
到:(c:\PLT\collects\sherman
其中c:\sherman
包含github 存储库的内容)。 - 运行
cmd.exe
,然后cd c:\sherman
。 set PATH=c:\PLT;%PATH%
sherman.bat run trivial.s
- 这个命令实际上,据我了解,相当于:
(需要库“runtime.ss”“谢尔曼”) (参数化((当前命名空间谢尔曼命名空间))(加载“trivial.s”)) (当前命名空间谢尔曼命名空间)
- 之后,我收到上述错误(MzScheme 版本将报告为 103p1 或其他)。
你能帮我解决问题吗?
编辑 2:已解决!
对于它可能关心的人,我在项目页面上添加了一个完全成熟的“如何使用这个项目”说明,在soegaard的帮助下详细说明了问题的解决方案。
简而言之:
copy trivial.s trivial.rs
rem (the above is workaround for problems with 'r2s.exe < trivial.r > trivial.rs')
sherman.bat compile trivial.rs
sherman.bat run trivial.zo
rem (or: sherman.bat run trivial.ss)