Agda como lenguaje de programación [cerrado]
-
13-12-2019 - |
Pregunta
He encontrado mucha información útil sobre el uso de Agda como sistema de prueba.Prácticamente no he encontrado información sobre el uso de Agda para escribir programas utilizables.Ni siquiera puedo encontrar un ejemplo de "hola mundo" que se compile con la versión más reciente de Agda.
Entonces,
¿Existen buenos tutoriales sobre Agda como lenguaje de programación?
¿Existen otros lenguajes de naturaleza similar (funcionales diferidos escritos de forma dependiente) que tengan documentación más madura para usarlos como lenguaje de programación?(Encontré toneladas de documentación excelente sobre Coq, pero, nuevamente, nada de "Hola mundo").
Solución
Para imprimir una cadena en Agda, necesita el biblioteca estándar.Puedes encontrar un ejemplo de "hola mundo" aquí para Agda 2.2.6 y std lib 0.3.Este ejemplo no funciona para Agda 2.3.0 y std lib 0.6 actuales.Leí algunas fuentes en std lib 0.6 y descubrí que la siguiente funciona:
module hello where
open import IO.Primitive using (IO; putStrLn)
open import Data.String using (toCostring; String)
open import Foreign.Haskell using (Unit)
main : IO Unit
main = putStrLn (toCostring "Hello, Agda!")
Para compilarlo necesitas
- guárdelo en "./hello.agda"
- descargue lib-0.6.tar.gz y descomprímalo en algún lugar, diga DIR
- instalación de cd DIR/ffi && cabal
- agda -i DIR/src -i .-c hola.agda
En mi MacOSX Lion con ghc-7.4.2 y cabal-1.16.0, este ejemplo funciona bien.Obtengo un programa ejecutable llamado "hola" con un tamaño de 19,1M.
Otros consejos
Esto es incipiente, pero algún día podría convertirse en un recurso útil: