Pregunta

malas noticias esta mañana, yo estaba dispuesto a tratar de utilizar Leksah (bonita aplicación por cierto) para continuar el aprendizaje de Haskell.

Me podía compilar el ejemplo "Hello World" que encontré leyendo el leksah tutorial .

module Main (
main = putStrLn "Hello World"     
) where

compilation-error: src\Main.hs:16:5: parse error on input = ' `

y

module Main (
) where
main = putStrLn "Hello World"

compilation-error: src\Main.hs:1:0: The main functionmain' no se exporta por el módulo Main'

¿Qué le aconsejaría que lo intente otra cosa?

EDITAR IMPORTANTE Ahora Leksah se envía con un archivo Main.hs, cargado directamente la primera vez que inicie leksah, que contiene un proyecto totalmente functionnal Hello World mini. También tiene la unidad minimalista parte contador de pruebas. Ideal para principiantes : -)

¿Fue útil?

Solución

El texto en el un paréntesis después del nombre del módulo es una lista de exportación. Esto significa que usted tiene que poner todas las funciones en el programa que desea exportar allí. Pero aparte de esto, también hay que definir su función en algún lugar principal. Prueba esto:

module Main (
  main
) where
main = putStrLn "Hello World"

PS:. También puede quitar el un paréntesis y algo allí, que a nada en el módulo que se va a exportar

Otros consejos

Su segundo ejemplo es casi allí, basta con retirar el () del lado Main. Esta es la lista de exportación para su módulo, lo que usted ha hecho vacío (nada en el medio de los paréntesis). Debido a eso, main no se ve (porque no se exporta).

También puedes, simplemente exportar principal:

module Main (main) where

"¿Es una buena práctica todo lo exportación?" Definitivamente no. Usted no quiere que los detalles de implementación como métodos auxiliares de fugas al exterior. Otro ejemplo son los constructores de datos, porque no hay manera de tener comprobaciones de validez, los argumentos por defecto, etc para ellos. Para superar esto, que las utilice en el interior del módulo, y proporciona funciones de inicialización conveniente y seguro para el exterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top