2012-04-29 60 views
1

我完全新手哈斯克爾。關於haskell,如何在文件中定義函數?

我有這樣代碼段

lucky:: Int->String 
lucky 7 = "LUCKY NUMBER SEVEN!" 
lucky x = "Sorry , youre out of luck pal!" 

我直接試圖輸入到終端,似乎不正確的。 但是,如果我想把它放在文件中並加載這個文件,然後調用幸運函數。我應該如何構建這個文件? 謝謝!

我嘗試這樣做:

module Main where 
lucky:: Int->String 
lucky 7 = "LUCKY NUMBER SEVEN!" 
lucky x = "Sorry , youre out of luck pal!" 


main = do 

但是當我嘗試調用終端幸運,我得到這個:

factorial.hs:7:8: Empty 'do' construct 
lucky 7 

<interactive>:1:1: Not in scope: `lucky' 

回答

5

的問題是,你的最後一行,main = do,語法錯誤;如果你的文件有語法錯誤,那麼它的任何函數都不會加載。如果你取出你的main的定義並嘗試加載它,它應該可以正常工作。

在一個不相關的音符,通常Haskell的類型簽名都寫有像lucky :: Int -> String間距。

+0

謝謝。固定:) – 2012-04-29 00:51:25

4

你不需要module Main wheremain = do線。

您可以加載並使用函數定義爲ghci中,只需將文件保存與「雜項文件」擴展名,然後鍵入:load和文件名

+0

(?你能進行編輯你的答案,我不小心downvoted它,除非它的編輯:)無法撤消) – huon 2012-04-29 02:22:23

+1

@dbaupp:做:) – amindfv 2012-04-29 12:02:51