Standard ML of New Jersey ( SML / NJ ; Standard Meta-Language of New Jersey) es un compilador y entorno de programación gratuito y de código abierto para el lenguaje de programación Standard ML . Aparte de su sistema de tiempo de ejecución , que está escrito en C , SML / NJ está escrito en ML estándar. Originalmente fue desarrollado conjuntamente por Bell Laboratories y la Universidad de Princeton . [3]
Paradigma | Multi-paradigma : funcional , imperativo |
---|---|
Lanzamiento estable | 110,99 [1] / 24 de diciembre de 2020 |
Disciplina de mecanografía | fuerte , estático , inferido |
Licencia | Licencia similar a BSD [2] |
Extensiones de nombre de archivo | .sml |
Sitio web | www |
Influenciado por | |
ML estándar | |
Influenciado | |
Mythryl |
Su nombre es una referencia tanto al estado estadounidense de Nueva Jersey en el que se encuentran Princeton y Bell Labs como a Standard Oil of New Jersey , el famoso monopolio petrolero de principios del siglo XX.
Características
SML / NJ amplía la biblioteca básica SML'97 con varias estructuras de nivel superior adicionales: [4]
- Información del sistema : la
SysInfo
estructura proporciona información sobre el sistema en tiempo de ejecución, como el tipo, el tipo y la versión del sistema operativo y si la máquina admite o no el multiprocesamiento . [5] - Punteros débiles : la
Weak
estructura proporciona soporte para punteros débiles . [6] - Suspensiones perezosas : la
Susp
estructura implementa las suspensiones necesarias para la evaluación perezosa (a diferencia de la evaluación entusiasta ). [7] - Componentes internos del compilador : la
Internals
estructura proporciona acceso a varios componentes internos del compilador, incluidos los métodos para crear instancias y modificar la tabla de señales. [8] - Acceso inseguro : la
Unsafe
estructura proporciona acceso inseguro a estructuras de datos y funciones del sistema en tiempo de ejecución. [9] - Estructuras de compilador visibles : SML / NJ también incluye estructuras que brindan acceso al compilador de ML, que contiene subestructuras para la creación de perfiles de ejecución, control de la impresión de mensajes de error del compilador y advertencias, y una bonita impresión personalizable. [10]
Además, SML / NJ proporciona algunas construcciones sintácticas que no son características estándar de SML'97: [4]
- Expresiones y patrones vectoriales : SML / NJ permite la creación de vectores con la sintaxis y permite la coincidencia de patrones en ellos con sintaxis análoga.
#[exp0, exp1, ..., expn−1]
- O-patrones : SML / NJ extiende la sintaxis de los patrones SML'97 para permitir la coincidencia de múltiples patrones en una sola regla, siempre que cada patrón tenga el mismo tipo, usando .
(apat1 | ... | apatn) => exp
- Incrustación de lenguaje de objetos : SML / NJ proporciona la sintaxis de comillas / anticillas que permite la incrustación de expresiones en la sintaxis concreta de un lenguaje de objetos dentro de las expresiones y programas ML. [11]
- Módulos de orden superior : SML / NJ admite la parametrización de functores al permitir que los functores sean componentes de estructuras, además de los módulos paramétricos de Standard ML en forma de functores.
Desarrollo
ML sucesor es un término que se utiliza para describir la próxima versión del idioma. Los documentos que lo describen se han extraído de los archivos SML / NJ '97 y se han puesto a disposición como un repositorio de GitHub de documentos TeX con los que se espera que la comunidad colabore y haga crecer el idioma. [12] Las funciones de ML sucesoras se pueden habilitar usando la opción de línea de comandos -Cparser.succ-ml=true
. [13]
Desde al menos 1998, [14] MLton [15] es el compilador estándar de bootstrapping , y tiene algo de [16] soporte para Successor ML.
En 2008, se comenzó a trabajar en HaMLet , [17] una implementación de referencia de Successor ML escrita completamente en Standard ML. [18] A partir de 2018, HaMLet sigue siendo la única implementación completa de Successor ML, con novedades adicionales. [dieciséis]
Desde 2015, [19] la evolución de SML / NJ se orientó hacia la evolución de la biblioteca Basis [20] y la adición de soporte para la definición de ML sucesor con el lanzamiento de la versión 110.79. [13]
A fines de 2020, se agregó soporte de 64 bits con el lanzamiento de la versión 110.99. [19]
Ver también
- AA extendido
- ML dependiente
enlaces externos
- ML estándar de Nueva Jersey
- ML sucesor
- Biblioteca básica de AA estándar
- Aldea
Referencias
- ^ https://smlnj.org/dist/working/110.99/index.html .
- ^ "Licencia estándar ML de Nueva Jersey" . www.smlnj.org .
- ^ "Información de antecedentes de SML / NJ" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ a b "Funciones especiales de SML / NJ" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "La firma SYS_INFO" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "La firma DÉBIL" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "La firma SUSP" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "La firma INTERNOS" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "La estructura insegura" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "El compilador visible" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "Cita de SML / NJ / Antiquote" . www.smlnj.org . Consultado el 5 de septiembre de 2018 .
- ^ "Definición de ML sucesora" .
- ^ a b "ML estándar de Nueva Jersey versión 110.79 NOTICIAS" . 2015-10-04.
- ^ "Notas de cambio de MLton 1999-03-19" .
- ^ "El repositorio MLton" .
- ^ a b "Tres esfuerzos de implementación para apoyar el ML sucesor" .
- ^ Andreas Rossberg. "HaMLet S: convertirse o no convertirse en sucesor de ML" (PDF) .
- ^ "Intérprete de referencia SML" .
- ^ a b "Registro de cambios de ML estándar de Nueva Jersey para v110.99" .
- ^ "La biblioteca básica de ML estándar" .