web-dev-qa-db-fra.com

Erreur Haskell - Expression nue au niveau supérieur

J'ai le code suivant:

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

print fib 5

Et pour une raison quelconque, cela lance une erreur:

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

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

Que se passe-t-il?

32
tekknolagi

Vous ne pouvez pas avoir d'expression au niveau supérieur. Le point d'entrée du programme Haskell est une fonction main dans le module Main. Aussi print fib 5 appelle print avec deux arguments, vous devez faire:

main = print $ fib 5

ou

main = print (fib 5)
49
Cat Plus Plus