5

Me gustó mucho aprender a ML en la universidad. Encuentro la programación funcional a menudo una forma refrescante y elegante de escribir ciertos algoritmos. He oído hablar de F # y jugué un poco con eso. Aun así, he escrito algunas funciones interesantes en ML y me gustaría integrarlas como bibliotecas que podría usar en otras aplicaciones.Uso de ML en aplicaciones del "mundo real"

Normalmente pego mis funciones en el intérprete SMLnj. ¿Hay alguna manera de compilarlos?

+1

SMLnj también puede compilar código ... busque CM, el administrador de compilación. (Aunque esto realmente no ayuda con la integración en otras aplicaciones.) – ephemient

Respuesta

5

Tendrás que usar algo como the MLj Compiler. Se compila en el código de Java Byte. O puede usar el compilador SML.NET para compilar en .NET IL.

+0

Precioso, ambos parecen dos buenas opciones. – Chet

4

Es común entre ML para ambos lados exportar a C y luego llamar a las demás funciones C. Casi todo lo que tiene una biblioteca FFI para la 'facilidad' exportar a C

http://www.smlnj.org/doc/SMLNJ-C/index.html

por lo que el mundo fuera de su biblioteca de SML se comportaría como una biblioteca C, excepto con los segfaults assiciated y pérdidas de memoria *

* no es una garantía

2

Los proyectos popularizan los idiomas. Haga el trabajo de la tierra para un proyecto interesante e innegablemente "genial" usando ML, y la gente acudirá en masa al idioma. Por ejemplo, fíjate en Erlang con ejabberd y mochiweb, ambos geniales proyectos que han hecho maravillas para un lenguaje de diamantes en desuso como el de erlang (que es, por cierto, mi lenguaje de desarrollo preferido últimamente). Por mi parte, me encantaría ver a alguien hacer algo radical con ML, el lenguaje es una alegría para pensar.

2

Hay several Standard ML compilers. La wiki de MLton también contiene un benchmark.

Utilicé Moscow ML que compila Standard ML en bytecode. No es rápido, pero funciona. MLton a menudo se cita como el mejor compilador de ML estándar con respecto a la eficiencia.

0

Tenga en cuenta que Poly/ML versión 5 o posterior es compatible tanto con el modelo tradicional de "volcado de pilas" como con ejecutables independientes de estilo C. La documentación en el Poly/ML website está repartida en muchos lugares diferentes, algunos de ellos con fechas muy antiguas en el título, pero el sistema está vivo y coleando.

La generación de código objeto se explica de paso en release notes para la versión 5.0 (estamos actualmente en 5.5): vea PolyML.export allí.

También hay alguna interfaz Poly/ML C, que se ha renovado recientemente para algunos proyectos de GUI. Deberías preguntar en la lista de correo Polyml.

Cuestiones relacionadas