ML IDE y compilador para Windows o Linux o Mac


Tengo que escribir algún código en ML y es la primera vez que voy a usar el lenguaje. ¿Hay algún Entorno de Desarrollo para ML Estándar? (preferiblemente bajo Windows). Traté de googlear (y stackOverFlowing! ) pero todo lo que encontré fueron compiladores simples para Linux (a lo sumo con una consola interactiva), pero no IDE ni Eclipse/NetBeans plugin. Alguna sugerencia ?

Author: Sajad Bahmani, 2010-01-10

6 answers

Cómo configurar SML con Sublime Text 2

Para aquellos que prefieren Sublime Text en lugar de Emacs como el editor de elección para programar SML, la siguiente guía describe cómo configurar Sublime Text para que funcione con SML.

Para que esta guía funcione para usted, ya debe haber instalado smlnj.

Paso 1: Instale Sublime Text and Package Control

Comienza por Descargando Sublime Text 2. Asegúrese de descargar la versión 2, porque el SML el soporte de sintaxis aún no funciona con la versión 3.

Sublime Text admite un increíble conjunto de paquetes (es decir, plugins) que puede instalar por separado. Uno de esos paquetes se llama Control de paquetes. Primero debe Instalar Package Control para poder instalar otros paquetes directamente desde el editor. El enlace proporcionado explica lo que necesita hacer para instalar este paquete.

Paso 2: Instalar SML y Sublime REPL

Ahora que tiene Control de Paquetes instalado va a ser muy fácil instalar otros paquetes. Hay dos paquetes que debemos instalar ahora: SML para soportar características de resaltado de sintaxis para el lenguaje de programación y SublimeREPL que, como se puede adivinar, es un paquete que agrega capacidades REPL para muchos lenguajes de programación diferentes a Sublime Text.

Para instalar estos paquetes debe ir al menú y buscar Herramientas -> Paleta de comandos y escribir "Instalar paquete". En el cuadro de búsqueda, escribe el nombre de el paquete que desea instalar, seleccione su paquete de la lista encontrada y presione entrar para instalarlo. Haga esto para los dos paquetes mencionados anteriormente:" SML "y"SublimeREPL"

Una vez que haya instalado el paquete SML, si abre un archivo SML debería obtener las capacidades de resaltado de sintaxis dentro del editor. Incluso proporciona un tema de Texto Sublime llamado Son of Obsidian que puede habilitar en Preferencias - > Esquema de color - > SML - > Son of Obsidian. Pero usted no está obligado a habilitar el tema para trabajar con SML, esto es solo una preferencia.

Una vez que haya instalado el paquete SublimeREPL, podrá ir al menú Herramientas -> SublimeREPL -> SML y abrir una sesión de REPL SML que soportará resaltado de sintaxis usando el paquete SML, e historial de comandos, edición de líneas y autocompletado. Puede hacer su vida realmente fácil si abre dos pestañas lado a lado y en la pestaña izquierda puede tener su archivo de código SML y en su sesión de REPL SML derecha. Puedes hacer eso. mediante el uso de la Vista - > Opciones de diseño.

Paso 3: Atajos de teclado

Ahora vamos a añadir algunos atajos de teclado para trabajar con el REPL. El paquete SublimeREPL ofrece poca configuración de teclado, y los proporcionados probablemente no van a funcionar bien con el REPL SML. Así que esto es lo que normalmente hago.

  • Primero vaya a Preferencias - > Explorar paquetes
  • Vaya a la subcarpeta SublimeREPL/config/SML.
  • Edita el archivo Default.sublime-commands en Sublime Text sí mismo. Este archivo contiene las opciones actuales del menú SML dentro del menú Herramientas - > SublimeREPL. Por lo tanto, ahora lo cambiaremos para crear una segunda opción que pueda ejecutar un archivo existente en una nueva sesión de SML REPL. Mi archivo editado se ve como se muestra a continuación. Observe el campo "id". Podemos definir tantos comandos diferentes como queramos, dándoles un ID diferente. En el siguiente paso vamos a definir lo que hace cada comando.

    [
        {
            "caption": "SublimeREPL: SML",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml",
                "file": "config/SML/Main.sublime-menu"
            }
        },
        {
            "caption": "SublimeREPL: SML - Run File",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml_run",
                "file": "config/SML/Main.sublime-menu"
            }
        }    
    ]
    
  • Ahora, en el mismo directorio que el archivo anterior, edite el archivo Main.sublime-menu. Este archivo contiene los detalles de lo que cada comando definido anteriormente debe hacer. My edited file define los dos comandos descritos anteriormente, uno para abrir simplemente el REPL y otro para abrir el archivo actual en el REPL. Se ve como sigue:

    [
         {
            "id": "tools",        
            "children":
            [{
                "caption": "SublimeREPL",
                "mnemonic": "r",
                "id": "SublimeREPL",
                "children":
                [{
                    "caption": "SML",
                    "id": "SML",
                    "children": [
                        {"command": "repl_open",
                         "caption": "SML",
                         "id": "repl_sml",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        },
                        {"command": "repl_open",
                         "caption": "SML - Run Current File",
                         "id": "repl_sml_run",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml", "$file_basename"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        }
                    ]                                
                }]
            }]
        }
    ]
    
  • El paso final es agregar atajos de teclado para estos dos comandos. Vaya a Preferencias - > Usuario de enlaces de teclas y edite el archivo con los siguientes dos comandos adicionales. Siéntase libre de cambiar mis teclas y usar cualquier otra tecla de acceso directo que encontrar apropiado, siempre que no se utilizan para otras características.

    [
        {  
          "keys":["ctrl+alt+j","k"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        } ,
        {  
          "keys":["ctrl+alt+j","m"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml", "$file_basename"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        }  
    ]
    

Y hemos terminado. Ahora, puede abrir el REPL SML simplemente presionando CTRL+J,K (esto es presionar Ctrl+Alt+J, luego soltar las teclas y presionar K). Y si actualmente está trabajando en un archivo SML, puede presionar CTRL+J,M para enviarlo a una nueva sesión de REPL de SML.

Paso 4: Sistema de compilación

Sublime Text proporciona configuraciones eso le permite analizar su archivo de código y determinar si algo está mal y le permite saber exactamente dónde está el problema. Para hacer esto debemos configurar un "sistema de compilación". La configuración es simplemente un archivo que le dice a sublime text qué comando ejecutar y cómo interpretar la salida. Si sml parser falla al analizar o ejecutar su programa, entonces la salida le dice dónde está el problema. El sistema de compilación nos permite definir una expresión regular para analizar dicha salida y ayudar a Sublime text busque la línea y columna que contiene el problema.

Vaya a Preferencias - > Buscar paquetes y debajo de la carpeta de usuario cree un nuevo archivo llamado SML.sublime-build y defina el archivo de la siguiente manera:

{  
  "cmd": ["/usr/local/bin/sml","$file"],  
  "selector": "source.sml",  
  "working_dir": "$file_path",
  "file_regex": "^(.*\\.sml):(\\d+)\\.(\\d+)(\\-(\\d+)\\.(\\d+))?\\s(.*)$"
 } 

Asegúrese de reemplazar la ruta del comando con una ruta válida en su sistema. Una vez que haya guardado el archivo, puede ir al menú y elegir Herramientas -> Construir sistema -> SML. Luego, para verificar su archivo, puede hacer Herramientas - > Construir para analizar su archivo y encontrar cualquier error. Y mediante el uso de la opción de menú Herramientas -> Resultado de compilación - > Resultado siguiente y Resultado anterior puede navegar entre los errores detectados por la opción sistema de compilación y Sublime Text colocará el cursor en la posición exacta del error según lo informado por el compilador SML.

Mi expresión regular anterior podría no ser la mejor, así que siéntase libre de mejorarla como mejor le parezca.

Y eso es todo. Estás casi listo para comenzar a codificar con SML y Sublime Text.

 19
Author: Edwin Dalorzo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-19 08:21:24

Puede usar Isabelle/jEdit como IDE para Isabelle/ML o el estándar oficial ML (SML'97). El sistema ML subyacente es Poly/ML , que es notable por su soporte para hardware multinúcleo.

Estrictamente hablando, el entorno Isabelle es para probar teoremas interactivos y automatizados, pero su soporte SML IDE es bastante sofisticado: los archivos fuente se comprueban estáticamente y se evalúan semánticamente mientras el usuario está editando. Las fuentes anotadas contienen elementos de marcado acerca de los tipos inferidos, referencias a la definición de posiciones de elementos, etc.

Como inicio rápido, vea el panel de Documentación, ejemplos de sección, entrada src/Tools/SML/Examples.thy (a partir de Isabelle2014).

SML-PIDE

 20
Author: Makarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-17 14:53:16

Cuando trabajo con SML en Windows, he estado usando SML/NJ para compilar y Notepad++ para editar (Notepad++ tiene color de sintaxis para Caml, que debería ser idéntico a SML para sus necesidades).

Como se mencionó, para ML un editor simple debería ser suficiente.

 11
Author: Oak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-10 11:06:57

Para SML existen algunos modos Emacs. Comprobar http://mlton.org/Emacs para más información.

El modo sml debería proporcionarle un buen entorno para escribir código SML. Eclipse & Co. fueron desarrollados debido al hecho de que Java requiere una gran cantidad de cosas repetitivas como accesores, adaptadores y así sucesivamente. Si usted requiere las mismas características para ML entonces usted debe comprobar dos veces si usted no está sobre-ingeniería.

Edit: y por cierto, SMLNJ viene con un plugin para eclipse. No puedo publicar un enlace sin embargo, solo google para smlnj eclipse .

 7
Author: Damg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-10 11:03:29

Estoy desarrollando el IDE de Scheme para Windows. Se llama "Babbage" . También tiene modo para OCaml y SML. Es como un Emacs mínimo. Babbage es muy simple y tiene ventanas como clave asignar. Babbage es editor Unicode.

Http://homepage1.nifty.com / ~skz/Entry/babbage.html

 6
Author: kenichi sasagawa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 20:17:59

Eclipse se puede configurar para obtener mucha funcionalidad útil, sin tener un sofisticado plug-in de lenguaje específico.

Mantengo una guía para configurar Eclipse para nuevos lenguajes. Algunos aspectos destacados de ese documento:

  • Los colores de sintaxis se pueden agregar con el Colorer de Eclipse . Son plug-ins que proporcionan colores de sintaxis para un gran número de idiomas, incluyendo SML y OCaml. Se pueden agregar nuevos idiomas fácilmente usando custom archivos de color.

  • Para construir usando un compilador externo desde dentro de Eclipse se puede usar la característica estándar Creador de programas. El constructor se ejecuta cuando se emite el comando normal Build Project. Para configurar un nuevo constructor: Propiedades del proyecto -> Constructores -> Nuevo... - >Program o utilice el plug-in de marcador de construcción establecido a continuación.

  • Para capturar errores de compilación y advertencia desde un constructor externo un analizador de salida de compilación puede ser utilizado. Laid Builder Marker es un plug-in que implementa dichos analizadores. Los analizadores ponen marcadores de problemas en los editores y en la vista de problemas. Este complemento también se puede usar para agregar Creadores de programas a proyectos. El constructor para Cabal se puede utilizar como punto de partida.

  • Para ejecutarprogramas compilados desde dentro de Eclipse, use la característica Herramientas externas. (Ejecutar -> Herramientas Externas)

  • Soporte Extendido para la navegación de código y la selección de texto se pueden agregar con algunos de los otros plug-ins de Proyecto establecidos: El complemento Selección de bloque de marcadores se puede usar para seleccionar texto encerrado entre corchetes. El complemento Editor Utilities se puede utilizar para, entre otras cosas, saltar entre bloques de código delimitados por líneas en blanco.

  • Use el comando estándar Terminación de palabras (Mayús+Alt+7) como asistente de contenido de una persona pobre.

  • Utilice el standard Alternar la selección de bloques comando (Mayús+Alt+A) para insertar/eliminar comentarios de línea en varias líneas al mismo tiempo.

  • Algunas otras características útiles de Eclipse estándar incluyen:

    • El comando Open Resource (Ctrl+Shift + R )
    • El comando Búsqueda de archivos (Ctrl + H )
    • La función de marcadores (Editar -> Agregar marcador). Asegúrese de marcar Incluir en la casilla de navegación siguiente/anterior (Preferencias -> General -> Editores> Editores De Texto -> Anotaciones> Marcadores).

Sitio de actualización para el proyecto Laid:

https://bitbucket.org/lii/laid_language_tools/src/master/se.lidestrom.laid.update_site/

Actualizar sitio para Eclipse Colorer:

http://colorer.sourceforge.net/eclipsecolorer/

Descargo de responsabilidad: Soy el autor del proyecto Laid.

 2
Author: Lii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-24 11:13:55