Utilice mit-esquema con REPL y editor juntos

Oct 13 2020

Estoy pasando por el curso SICP y como se recomienda instalar mit-esquema. Quiero usar REPL junto con un archivo de esquema. La razón es porque puedo agregar código de esquema en el archivo y luego ejecutar los comandos en REPL. Lo que tengo funciona, pero el problema es que cada vez que edito el archivo, tengo que salir de la terminal y volver a cargar el archivo para que REPL vea los cambios.

¿Hay alguna forma de volver a cargar el archivo fácilmente o de alguna otra forma para que REPL vea los cambios del archivo?

Esta es mi configuración:

  1. Instalé mit-esquema con brew install mit-scheme
  2. Tengo un archivo local llamado code.scm
  3. En la terminal, cargo el archivo con mit-scheme --load /Users/name/Desktop/code.scm
  4. Terminal ahora inicia REPL y todo funciona. El problema es que si agrego un nuevo código al archivo code.scm, tengo que salir de la terminal y llamar a esto nuevamente:mit-scheme --load /Users/name/Desktop/code.scm

Detalles del sistema:

  • macOS Catalina - 10.15.6
  • Aplicación de terminal Mac predeterminada - Versión 2.10
  • Esquema MIT / GNU que se ejecuta bajo OS X
  • El editor de texto que utilizo es Atom - 1.50.0

Pregunta Editar # 1 (Basado en la respuesta a continuación)

Intenté seguir las instrucciones, pero esto es complicado.

Esto es lo que hice:

  1. Carrera mit-scheme < /Users/Desktop/code.scm

  2. Después de esto corrí mit-scheme --edita abrir Edwin. Traté de usar el código dentro del code.scmarchivo pero no lo reconoce. Este es el código en el code.scmarchivo:

Esto es lo que quiero poder hacer: Fíjense en esta imagen, puedo escribir un comando, presionar enter y automáticamente ejecuta el comando. Sin embargo, quiero poder llamar (fib 5)y hace referencia a la función en el code.scmarchivo.

¿Alguien podría explicar paso a paso cómo hacer esto? Es confuso mirar la documentación de los sitios web de esquemas.

Respuestas

2 WilliamLewis Oct 15 2020 at 00:25

En realidad, hay un loadprocedimiento integrado disponible en MIT Scheme REPL. Evaluar

(load "path/to/file.scm")

hace que el archivo Scheme ubicado en la ruta / a / file.scm se evalúe en el nivel superior (tenga en cuenta que se requieren las comillas dobles alrededor del nombre del archivo).

Y, como resulta, esta misma función se puede usar para recargar un archivo. Con esto en mente, un posible "flujo de trabajo" podría verse así:

  • Crear nuevo archivo fuente
  • Evaluar (load "path/to/file.scm")en el REPL
  • Editar archivo fuente
  • Evaluar (load "path/to/file.scm")en el REPL
  • ... etc.

Desafortunadamente, no creo que haya un procedimiento de "recarga" incorporado. Pero ... si te encuentras recargando mucho (como imagino que lo harás), siempre puedes escribir rápidamente el tuyo al comienzo de una sesión de piratería:

(define (reload)
  (load "path/to/file.scm"))

Y luego simplemente llame (reload)cada vez que realice un cambio en su archivo fuente.

Si está interesado en usar Emacs, diría que vale la pena intentarlo. Hay una pequeña curva de aprendizaje, pero no es tan empinada como parece :)

Además, no puedo recomendar el (los) lenguaje (s) de programación Racket lo suficiente. Hay una forma increíblemente sencilla de configurarlo para SICP, y es un entorno mucho más tolerante que Emacs. Avíseme si está interesado y desea ayuda para comenzar.

1 alinsoar Oct 13 2020 at 14:06

Debería utilizar emacs con xscheme.el . Funciona mucho mejor.

Si continúa como lo hace, también puede hacer mit-scheme < code.scmo mit-scheme --edit code.scmy también obtendrá un *repl*búfer dentro de edwin .

Sin embargo, te recomiendo el método emacs.

1 haziz Dec 19 2020 at 18:02

Un (load "/path/to/file")comando debería estar disponible para usted dentro de MIT Scheme y el editor Edwin con el que viene. Sin embargo, realmente recomendaría que use Emacs , y use Geiser dentro de eso para acceder tanto al REPL como para ayudar con la edición de archivos de esquema. También hace que lidiar con varios REPL de esquemas como Chez Scheme , Racket , MIT Scheme , Guile , Chicken , Gambit y Chibi Scheme sea bastante sencillo. El mismo (load "/path/to/file")comando estaría disponible para usted dentro del REPL que se ejecuta bajo Geiser , dentro de Emacs , pero generalmente es mucho más poderoso y fluido que cuando usa el REPL "desnudo". Emacs está muy bien adaptado para usarse con Scheme y LISP. Muy recomendable.

WillNess Dec 20 2020 at 22:01

Evaluar todo el búfer: presione Mo (M es Alt en Windows). Cuando esté en la ventana del archivo de origen, presiónelo. Evaluará todo el búfer, es decir, (re) cargará todo el archivo fuente (sin siquiera guardarlo primero). Lo encontré buscando en Google "mit esquema edwin tutorial" . Edwin es una especie de Emacs en sí.

Esta página dice: "Cc Cs cuando se hace en un búfer de modo de esquema [es decir, la ventana del archivo fuente de Scheme], cambiará al búfer de interacción de Scheme [es decir, REPL]". es decir, presiona Cx Cs para guardar el archivo , Mo para evaluar (es decir, cargar), Cc Cs para cambiar al REPL.

Si ha dividido su pantalla C-x 2entre un búfer de archivo de origen y el REPL ("búfer de interacciones"), puede cambiar entre ellos presionando C-x o(para "ir a la otra ventana").