Ошибка Haskell - голое выражение на верхнем уровне - PullRequest
32 голосов
/ 30 июля 2011

У меня есть следующий код:

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

print fib 5

И почему-то выдает ошибку:

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

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

Что происходит?

1 Ответ

49 голосов
/ 30 июля 2011

Вы не можете иметь выражение на верхнем уровне. Точка входа в программу на Haskell - это функция main в модуле Main. Также print fib 5 вызывает print с двумя аргументами, вам нужно сделать:

main = print $ fib 5

или

main = print (fib 5)
...