tutorial online logo empresa descargar constructora company haskell

online - Error del compilador Haskell: no en el alcance



haskell pdf (2)

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de aprender haskell escribiendo una simple utilidad de copia de archivo:

main = do putStr "Source: " srcPath <- getLine putStr "Destination: " destPath <- getLine putStrLn ("Copying from " ++ srcPath ++ " to " ++ destPath ++ "...") contents <- readFile srcPath writeFile destPath contents putStrLn "Finished"

Esto me pone

GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer ... linking ... done. Loading package base ... linking ... done. [1 of 1] Compiling Main ( D:/Test.hs, interpreted ) D:/Test.hs:8:22: Not in scope: `contents'' Failed, modules loaded: none. Prelude>

No entiendo ese error del compilador porque la variable parece estar bien. ¿Qué está mal?

Aquí hay un archivo repro: en rapidshare


Eso se ve correcto Acabo de pegar eso en un archivo .hs y: lo cargué en GHCi. Funciona aquí y tengo la misma versión de GHC que tú.


Parece que mezcló pestañas y espacios (simplemente mire su pregunta en la vista "editar" para ver el problema). Si bien su editor ve el código con una sangría uniforme, el compilador parece tener una interpretación diferente de cuán amplia debe ser una pestaña, lo que da como resultado que la línea de writeFile destPath contents adicionalmente. Entonces la fuente se interpreta así:

... putStrLn ("Copying from " ++ srcPath ++ " to " ++ destPath ++ "...") contents <- readFile srcPath writeFile destPath contents putStrLn "Finished"

En esta interpretación, el contents código fuente se usa antes de que se cree, por lo que se obtiene un error de compilación.

Para evitar este tipo de errores, mejor no utilice pestañas, o al menos tenga cuidado adicional de que los use de manera consistente.