Aprende a probar tus ejercicios de Unison en Exercism
El Unison Codebase Manager (UCM) es la herramienta que ejecuta el lenguaje de programación Unison y te permite navegar por el código de Unison que has escrito y guardado.
💡 Recuerda: el código de Unison no se guarda como contenido de archivos de texto. Por eso necesitamos una herramienta que nos permita cambiar y ejecutar programas de Unison.
Escribir código de Unison es tan simple como abrir la terminal que prefieras y ejecutar el comando ucm en el directorio donde vas a escribir tu código de Unison. Luego puedes usar tu editor de texto favorito para crear o abrir un archivo con el sufijo .u, como scratch.u o hello.u. La mayor parte de tu flujo de trabajo consistirá en navegar entre la instancia de línea de comandos de ucm en ejecución y tu archivo .u. El UCM escucha automáticamente los cambios en tu archivo con sufijo .u al guardarlo.
En lugar de una estructura de directorios, los codebases de Unison se organizan mediante «namespaces». Explorarás el namespace de la biblioteca estándar, llamado base, en busca de funciones y tipos de datos útiles, y crearás los tuyos a medida que escribas código de Unison. En el UCM, la navegación por el codebase se hace con los comandos ls y view, que sirven para listar el contenido de un namespace y ver el código fuente, respectivamente.
Aunque puedes navegar y ver tu codebase a través de la CLI del UCM, también es posible que quieras ver una bonita representación gráfica de tu trabajo. Puedes lograrlo ejecutando el comando ui en la CLI del UCM. Se abrirá una ventana del navegador con una vista del código de tu codebase. La interfaz local del codebase también es una excelente manera de explorar las funciones de nuestra biblioteca estándar, llamada base, que podrían resultarte útiles para resolver los ejercicios. Lee más sobre la interfaz local del codebase aquí.
Puedes practicar el flujo de trabajo de programación de Unison con el recorrido por el lenguaje Unison.
Crea un proyecto nuevo con el comando project.create y dale un nombre (por ejemplo, project.create hello-world)
Con el UCM observando el directorio del ejercicio, haz tus cambios en el archivo <myFileName>.u
Guarda el archivo <myFileName>.u
Si el archivo pasa la verificación de tipos, ejecuta los comandos add o update del UCM
<myFileName>.u hasta que compileEjecuta el comando load <myFileName>.test.u en la CLI del UCM para traer las pruebas al ámbito y ejecutarlas
Si estás trabajando en un ejercicio de Exercism desde la línea de comandos, lo más probable es que implementes tu solución en el directorio que lleva el nombre del ejercicio. Por ejemplo, si el ejercicio es hello-world, debes abrir ucm desde la línea de comandos después de hacer cd a ~/exercism/unison/hello-world y crear un proyecto en ucm (por ejemplo, project.create hello-world). Haz tus cambios de implementación en el archivo hello.u y, cuando estés conforme con tu implementación, ingresa el comando add o update en la CLI del Unison Codebase Manager (UCM) para agregar tu trabajo desde el archivo al codebase.
El archivo que contiene las pruebas de cada ejercicio tiene el sufijo .test.u. Querrás usar el comando load del UCM para traer las pruebas al ámbito y ejecutarlas. El comando load toma una ruta de archivo como argumento. Así es como se vería para el ejercicio hello world y el proyecto hello-world:
hello-world/main> load hello.test.u
Deberías ver un mensaje del UCM sobre los términos que se trajeron al ámbito y, lo más importante, el resultado de ejecutar la prueba:
⍟ These new definitions are ok to `add`:
hello.test : Test.Test
tests : [Result]
Now evaluating any watch expressions (lines starting with
`>`)... Ctrl+C cancels.
6 | test> tests = runAll [hello.test]
🚫 FAILED
Digamos que tus pruebas no pasaron la primera vez. Vuelve a editar tu archivo myExercise.u y, al guardarlo, puedes hacer update
I found and typechecked these definitions in ~/Exercism/unison/hello-world/hello.u. If you do an
`add` or `update`, here's how your codebase would change:
⍟ These names already exist. You can `update` them to your new definition:
hello : Text
hello-world/main> update
⍟ I've updated these names to your new definition:
hello : Text
Ahora podemos volver a cargar nuestras pruebas para ver si algo cambió.
hello-world/main> load hello.test.u
Now evaluating any watch expressions (lines starting with `>`)... Ctrl+C cancels.
6 | test> tests = runAll [hello.test]
✅ Passed : Passed 1 tests.
Para ver una lista de los comandos disponibles para interactuar con tu codebase, ejecuta help en la CLI del Unison Codebase Manager. La lista de comandos del UCM también está descrita en nuestro sitio web. Aquí tienes algunos que podrían resultarte útiles:
add: Agrega las definiciones nuevas del archivo .u al codebase.update: Funciona como add, salvo que si una definición del archivo tiene el mismo nombre que una definición existente, el nombre se actualiza para apuntar a la nueva definición.
update propagará el cambio automáticamente si es posible, o creará un elemento todo para refactorizarlo más adelante.load: Analiza, verifica los tipos y evalúa el archivo de borrador con sufijo .u que le indiques. Una vez verificado y evaluado, puedes agregar los términos a tu codebase.ls: Lista el contenido de un namespaceview: Muestra el código fuente de una definición de Unisonui: Abre la interfaz local del codebaseexit: Cierra el UCM