stringtranslate.com

Esquema 48

Scheme 48 es un lenguaje de programación , un dialecto del lenguaje Scheme , una implementación que utiliza un intérprete que emite bytecode . [2] Tiene una interfaz de función externa para llamar funciones desde el lenguaje C [3] y viene con una biblioteca para expresiones regulares (regex), [4] y una interfaz para Portable Operating System Interface ( POSIX ). [5] Está soportado por la biblioteca portátil Scheme SLIB , y es la base para el shell Scheme Scsh . [2] Se ha utilizado en investigación académica. [6] Es un software libre y de código abierto publicado bajo una licencia BSD .

Se llama "Esquema 48" porque la primera versión fue escrita en 48 horas en agosto de 1986. [7] Los autores ahora [ ¿cuándo? ] dicen que está destinado a ser entendido en 48 horas. [ cita requerida ]

Implementación

Scheme 48 utiliza una máquina virtual para interpretar el bytecode , que está escrito en un dialecto restringido de Scheme llamado PreScheme, que se puede traducir a C y compilar en un binario nativo. PreScheme, o Pre-Scheme, es un dialecto de Scheme con tipado estático que ofrece la eficiencia y el acceso a máquina de bajo nivel de C, pero conserva muchas de las características deseables de Scheme.

Pre-scheme era bastante interesante. Kelsey también publicó un artículo al respecto, creo. Era Scheme en el sentido de que se podía cargar en un sistema Scheme y ejecutar el código. Pero era restrictivo: requería que escribieras de una manera que permitiera una inferencia de tipo estática completa de Hindley-Milner, y todos los procedimientos de orden superior se sustituían en versión beta en tiempo de compilación, lo que significa que podías traducir *directamente* un programa prescheme a código C "natural" con eficiencia de nivel C [ sic ]. Es decir, podías ver prescheme como una alternativa realmente agradable a C para código de bajo nivel. Y podías depurar tus programas prescheme en el entorno de desarrollo interactivo de Scheme que eligieras, antes de pulsar un interruptor y traducir a código C, porque prescheme era solo un Scheme restringido. El intérprete de código de 48 bytes de Scheme estaba escrito en prescheme. Prescheme en cierto modo murió: más allá del artículo académico que escribió, Kelsey nunca tuvo tiempo de documentarlo y convertirlo en una herramienta independiente que otras personas pudieran usar (el grupo de Ian Horswill en Northwestern es una excepción a esa afirmación: han usado Prescheme

—  Olin Shivers, "Olin Shivers: Historia de T" [8]

Referencias

  1. ^ Reclamación de R5RS en el sitio web del proyecto
  2. ^ ab Kelsey, Richard; Rees, Jonathan. "Esquema 48". S48.org . Consultado el 5 de diciembre de 2018 .
  3. ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 de enero de 2008). "El manual de referencia de Scheme 48 incompleto para la versión 1.8: combinación de Scheme 48 y C". S48.org . Consultado el 5 de diciembre de 2018 ., Capítulo 8 del manual de la versión 1.8.
  4. ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 de enero de 2008). "El manual de referencia de Scheme 48 incompleto para la versión 1.8: expresiones regulares". S48.org . Consultado el 5 de diciembre de 2018 ., Capítulo 5 del manual de la versión 1.8.
  5. ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 de enero de 2008). "El manual de referencia de Scheme 48 incompleto para la versión 1.8: acceso a POSIX". S48.org . Consultado el 5 de diciembre de 2018 ., Capítulo 9 del manual de la versión 1.8.
  6. ^ Turno final para llamada/cc: implementación directa de turno y reinicio
  7. ^ Rees, Jonathan A. "Página 48 del plan JAR". Jonathan A. Rees . Mumble.net . Consultado el 5 de diciembre de 2018 .
  8. ^ Shivers, Olin. "Olin Shivers: History of T". PaulGraham.com . Consultado el 5 de diciembre de 2018 .

Enlaces externos