Estoy intentando resucitar un proyecto antiguo (1999 o anterior) escrito en Scheme (PLT-Scheme, usando la herramienta de línea de comandos mzscheme
(?) Para empeorar las cosas, no sé Scheme, o Lisp (de hecho, quiero aprender, pero esa es otra historia).Resurrecting old PLT-Scheme project (pre-1999)
que tienen el código fuente del proyecto en:
Ahora, cuando se ejecuta el código, se rescata con un mensaje de error, como a continuación:
Sherman runtime version 0.5
Hosted on MzScheme version 52, Copyright (c) 1995-98 PLT (Matthew Flatt)
reference to undefined identifier: list->block
(He intentado las versiones PLT-Scheme 52, 53, 103, 103p1. Las versiones anteriores no permiten la opción mzscheme -L
, que es ref Erenced en el script sherman.bat
utilizado en el proyecto. Las versiones posteriores también tienen algunos problemas más graves con el código o las opciones)
La dificultad es, que por lo que veo, list->block
realidad es definido - véase:. collects/sherman/BLOCK.SS
line 48. Entonces, ¿qué está mal?
Para ejecutar el código, realice los siguientes pasos:.
- Descargar PLT-Esquema V 103p1 (de the old versions download page - en primer lugar el cierre de la "PLT Scheme está ahora Raqueta" banner) - para Windows, uso: mz-103p1-bin-i386-win32.zip.
- Descomprimir (por ejemplo, en el directorio
c:\PLT
). - Copie
c:\sherman\collects\sherman
directorio con contenido a:c:\PLT\collects\sherman
(dondec:\sherman
contiene el contenido de github repository). - Ejecute
cmd.exe
, luegocd c:\sherman
. set PATH=c:\PLT;%PATH%
sherman.bat run trivial.s
- este comando es, de hecho, por lo que entiendo, lo que equivale a:
(require-library "runtime.ss" "sherman") (parameterize ((current-namespace sherman-namespace)) (load "trivial.s")) (current-namespace sherman-namespace)
- Después de eso, me sale el error como se describe arriba (la versión de MzScheme sería reportada como 103p1 o lo que sea).
¿Podría ayudarme a resolver el problema?
EDIT 2: SOLVED!
Para quien pueda interesar, he añadido un hecho y derecho "How to use this project" instruction on the project page, que detalla la solución al problema gracias a soegaard's help.
En resumen:
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)
Probablemente, sería más fácil transferir el código relevante a Racket, usando '#lang mzscheme' en la parte superior de cada archivo. –
@ SamTobin-Hochstadt: ¿No tendré dificultades para transferir varias llamadas a bibliotecas antiguas? Por lo que probé, p. el formulario '(require-library)' (usado extensivamente en este proyecto) ni siquiera se puede encontrar en los documentos en línea de Racket? – akavel
El formulario 'require-library' es una versión antigua de' require'. Probablemente quiera leer las [guías de portabilidad] (http://docs.racket-lang.org/release/index.html) en los documentos (que mencionan 'require-library', por ejemplo). –