Para usar con una clase que enseñaré, estoy buscando un compilador rápido o un intérprete de código de bytes para ML estándar. Estoy buscando tiempos de compilación rápidos; cualquier tiempo de ejecución razonable hará. Bonificación si el modelo de compilación es simple y claro. Los estudiantes en la clase también usarán MLton para generar buenos binarios, pero MLton tarda en compilarse y hay momentos en que los estudiantes necesitan algo con lo que puedan interactuar.Compilador Fast Standard ML o intérprete de bytecode, con loop read-eval-print, para Linux?
Esto es lo que ya sé:
ml estándar de Nueva Jersey tiene una lectura-eval-print-bucle interactivo, pero sus reglas de compilación son un poco extraño, y es un poco lento. Aún así, puede ser el principal contendiente.
Moscú ML solía ser ideal, pero aún no se ha actualizado con la biblioteca 2004 Standard Basis. Lo más desafortunado, porque además de sus muchas otras buenas propiedades, Moscow ML también tiene un sistema de ayuda interactiva — pero no puedo infligir a mis alumnos un compilador cuyas bibliotecas hagan algo diferente de lo que dice toda la documentación en línea.
Poly/ML bien podría encajar en la factura, excepto que al mirar la documentación en línea, no puedo encontrar la manera de compilarla. Eso podría estar bien.
Por el momento parece que SML/NJ o Poly/ML serían el mejor compromiso. Han pasado muchos años desde que hice un trabajo serio en Standard ML, y me gustaría obtener información sobre otros compiladores o cuál de estas alternativas es, en su experiencia, la más rápida de interactuar y la más fácil de aprender a usar.
No he tenido dificultades para compilar Poly/ML; Acabo de instalar el paquete Debian. Es el "otro sistema de compilación" que estoy teniendo problemas para descubrir. Quiero mucho que los estudiantes puedan usar un modelo con el que estén familiarizados --- compilar código fuente para obtener un archivo binario ejecutable --- pero con algo un poco más rápido que MLton. Tal vez debería descargar HaMLet y ver cómo está configurado Makefile. +1 –
Tanto HaMLet como MLton (y Isabelle AFAICT) controlan Poly/ML a través de la función 'use'. No sé de ningún proyecto (además de Poly/ML en sí) que utilice la función PolyML.make. Puede solicitar punteros en la lista de correo Poly/ML; su bajo tráfico, pero receptivo. –
Isabelle/ML utiliza la muy conveniente estructura PolyML.Compiler para implementar su propia variante de 'uso', de modo que el efecto en el entorno ML se gestiona internamente, p. para permitir deshacer/deshacer del entorno estático. – Makarius