2011-07-30 28 views
25
裸體表達

我有以下代碼:Haskell的錯誤 - 在頂級

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 

這是怎麼回事?

回答

44

你不能在頂層有一個表達式。 Haskell程序入口點是Main模塊中的main函數。此外print fib 5電話print有兩個參數,你需要做的:

main = print $ fib 5 

main = print (fib 5) 
+1

當我運行'GHC test.hs'它編譯...然後什麼都不做。我該怎麼做才能運行它? – tekknolagi

+7

@tekk它應該創建一個可執行文件 - 不知道默認名稱是什麼,但是'ls'應該告訴你。或者你可以做'runhaskell test.hs',它會從源頭上運行它。 – MatrixFrog

+1

如果你想在main中運行多個命令怎麼辦? – qed