2011-07-30 9 views
25

Tengo el siguiente código:Haskell Error - Expresión desnuda en nivel superior

fib n 
    | n == 0 = 0 
    | n == 1 = 1 
    | n > 1 = fib (n-1) + fib (n-2) 

print fib 5 

Y por alguna razón, se está lanzando un error:

[1 of 1] Compiling Main    (test.hs, test.o) 

test.hs:8:1: Parse error: naked expression at top level 

¿Qué está pasando?

Respuesta

44

No puede haber una expresión en el nivel superior. El punto de entrada del programa Haskell es una función main en el módulo Main. También print fib 5 llamadas print con dos argumentos, que tiene que hacer:

main = print $ fib 5 

o

main = print (fib 5) 
+1

Cuando ejecuto 'GHC test.hs' compila ... y luego no hace nada. ¿Qué debo hacer para ejecutarlo? – tekknolagi

+7

@tekk Debería crear un ejecutable: no estoy seguro de cuál es el nombre predeterminado, pero 'ls' debería decírselo. O simplemente puede hacer 'runhaskell test.hs' y se ejecutará correctamente" desde la fuente ". – MatrixFrog

+1

¿Qué sucede si quiere ejecutar múltiples comandos en main? – qed

Cuestiones relacionadas