/ / ¿Hay alguna forma de usar el modo de carga para archivos en DrRacket? - Esquema, raqueta, read-eval-print-loop

¿Hay alguna forma de usar el modo de carga para archivos en DrRacket? - Esquema, raqueta, read-eval-print-loop

Me gustaría usar DrRacket de la misma manera quefunciona para algunos de los "lenguajes heredados". En particular, me gustaría revisar un archivo como si fuera una secuencia de comandos emitidos al intérprete, y no como un módulo.

Esencialmente quiero ejecutar al menos un archivo en modo de carga, pero no estoy seguro si es posible hacerlo usando DrRacket.

Idealmente, podría:

* Especifique un archivo que establezca el idioma y quizás cargue algunos módulos, que se ejecutan de forma predeterminada al inicio.

* Luego, cargue un archivo que no sea un módulo (y no tiene la especificación #lang) y ejecútelo.

También sería bueno (ya que quiero usar Scheme) si permitiera redefiniciones, tal como lo hacen los lenguajes heredados.

Respuestas

2 para la respuesta № 1

Sí, puede, y de hecho, los "idiomas heredados" (y los "idiomas de enseñanza") se implementan como DrRacket Plugins. Puede eliminarlos de su copia de DrRacket e incluso agregar nuevos.

Hay varias formas de hacerlo dependiendo de si está de acuerdo con un #lang (o #reader) guardado en el archivo. Si no está, todavía es factible, solo necesita usar drracket:get/extend:extend-unit-frame para agregar su herramienta a DrRacket, y posiblemente drracket:get/extend:extend-definitions-text para ampliar fácilmente la ventana de definiciones.

No voy a entrar en los detalles de hacer un plugin DrRacket genérico aquí, que pertenece a una pregunta diferente ... también la DrRacket Plugins Manual Tiene la información que necesita.1 Sin embargo, te indicaré cómo puedes usar DrRacket en modo de carga fuera de la caja.

Revisar la racket/load idioma. Está diseñado para ejecutar cada expresión en el nivel superior como si estuviera en un REPL escribiéndola. Me parece muy útil para probar las diferencias entre el módulo de Racket y las interacciones de nivel superior.

Por supuesto, si no creas un plugin DrRacket, aún necesitarás poner:

#lang racket/load

en la parte superior de su archivo, pero de lo contrario obtendrá un "modo heredado" de la caja.

1Si no es así, continúe haciendo preguntas y, por supuesto, siempre amamos la ayuda de cualquier persona que esté dispuesta a contribuir. <3