Aprende a probar tus ejercicios de Haskell en Exercism
Ejecuta el siguiente comando en el directorio de tu ejercicio para ejecutar las pruebas:
stack test
Para ejecutar las pruebas cada vez que guardes un archivo, usa este comando en su lugar:
stack test --file-watch
No .cabal file found in directory
Probablemente estés usando una versión antigua de stack y tengas que actualizarla.
No compiler found, expected minor version match with...
Try running "stack setup" to install the correct GHC...
Solo haz lo que dice y descargará e instalará la versión correcta del compilador:
stack setup
Una solución a un ejercicio es un módulo de Haskell. El nombre del módulo se define en una sentencia import en el conjunto de pruebas, normalmente al principio:
import Test.Hspec (Spec, describe, it, shouldBe)
import Test.Hspec.Runner (configFailFast, defaultConfig, hspecWith)
import ModuleName (someFunc)
main :: IO ()
main ...
En este ejemplo, el archivo de pruebas importa, en la línea 4, un módulo llamado
ModuleName, que exporta una función llamada someFunc. Esto significa que tienes
que crear un archivo llamado ModuleName.hs que sería algo como esto:
module ModuleName (someFunc) where
someFunc :: ...
someFunc ...
Encontrarás un archivo con este nombre ya en su lugar en src/,
que puedes usar como punto de partida para tu solución.
Solo ten en cuenta que este stub está ahí únicamente para que puedas empezar. Siéntete libre de cambiarlo por completo si crees que es lo correcto.
Si quieres usar algunos paquetes para escribir una solución más elegante, primero
agrega los paquetes a las dependencias de tu solución en package.yaml:
library:
exposed-modules: ModuleName
source-dirs: src
dependencies:
- foo
- bar
Mientras trabajas de forma local, puedes usar los paquetes que quieras. Sin embargo, el ejecutor de pruebas en línea solo tiene acceso a un conjunto limitado de paquetes. Los paquetes disponibles son
base, containers, array, time, mtl, deepseq, exceptions, bytestring), másSi envías una solución que usa un paquete que no está disponible, el ejecutor de pruebas se topará con su falta de acceso a internet y producirá un error como este:
Cabal file info not found for unavailable-package-1.0@..., updating
Selected mirror https://hackage.haskell.org/
Downloading root
HttpExceptionRequest Request {
host = "hackage.haskell.org"
...
}
(ConnectionFailure ...)
Si quieres experimentar con tu solución en GHCi, solo ejecuta el comando:
stack ghci
Se recomienda mucho que ejecutes hlint en tu solución para ver si
detecta algo que se te esté pasando:
hlint ModuleName.hs
No tienes que aceptar todas las sugerencias que te da hlint, pero por lo general
te ayudarán a aprender a escribir código Haskell hermoso e idiomático.