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 sencillo como abrir el terminal que prefieras y ejecutar el comando ucm en el directorio donde vayas a escribir tu código de Unison. Después, puedes usar tu editor de texto favorito para crear o abrir un archivo con sufijo .u, como scratch.u o hello.u. La mayor parte de tu flujo de trabajo consistirá en ir y venir entre la instancia en ejecución de la línea de comandos ucm y tu archivo .u. El UCM detecta automáticamente los cambios en tu archivo con sufijo .u al guardarlo.
En lugar de una estructura de directorios, las bases de código de Unison se organizan mediante «espacios de nombres». Explorarás el espacio de nombres de la biblioteca estándar, llamado base, para encontrar funciones y tipos de datos útiles, y crearás los tuyos propios a medida que escribas código de Unison. En el UCM, la navegación por la base de código se hace con los comandos ls y view, que sirven para listar el contenido de un espacio de nombres y para ver el código fuente, respectivamente.
Aunque puedes navegar por tu base de código y verla a través de la CLI del UCM, es posible que también quieras ver una bonita representación gráfica de tu trabajo. Puedes hacerlo con el comando ui en la CLI del UCM. Abrirá una ventana del navegador con una vista del código de tu base de código. La interfaz local de la base de código también es una forma estupenda de explorar las funciones de nuestra biblioteca estándar, llamada base, que pueden resultarte útiles para resolver los ejercicios. Lee más sobre la interfaz local de la base de código aquí.
Puedes practicar el flujo de trabajo de programación de Unison con el tour del lenguaje Unison.
Crea un proyecto nuevo con el comando project.create y ponle un nombre (por ejemplo, project.create hello-world)
Con el UCM vigilando el directorio del ejercicio, haz tus cambios en el archivo <myFileName>.u
Guarda el archivo <myFileName>.u
Si el archivo pasa la comprobació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 scope y ejecutarlas
Si trabajas en un problema 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 en cuestión. Por ejemplo, si el ejercicio es hello-world, debes abrir el ucm desde la línea de comandos después de entrar con cd en ~/exercism/unison/hello-world y crear un proyecto en el ucm (por ejemplo, project.create hello-world). Haz los cambios de tu implementación en el archivo hello.u y, cuando estés satisfecho con ella, introduce el comando add o update en la CLI del Unison Codebase Manager (UCM) para añadir tu trabajo desde el archivo a la base de código.
El archivo que contiene las pruebas de cada ejercicio tiene el sufijo .test.u. Tendrás que usar el comando load del UCM para traer las pruebas al scope y ejecutarlas. El comando load toma una ruta de archivo como argumento. Así es como podría verse 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 han traído al scope y, lo que es 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
Supongamos que tus pruebas no pasaron a la primera. 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 ha cambiado.
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 base de código, ejecuta help en la CLI del Unison Codebase Manager. La lista de comandos del UCM también está descrita en nuestro sitio web. Estos son algunos que pueden resultarte útiles:
add: añade a la base de código las definiciones nuevas del archivo .u.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, comprueba los tipos y evalúa el archivo de borrador con sufijo .u indicado. Una vez comprobado y evaluado, puedes añadir los términos a tu base de código.ls: lista el contenido de un espacio de nombresview: muestra el código fuente de una definición de Unison concretaui: abre la interfaz local de la base de códigoexit: cierra el UCM