2012-04-29 63 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