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 

但是当我尝试在终端中调用lucky时,我得到了这个:

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

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

2 回答 2

5

问题是您的最后一行 ,main = do是语法错误;如果您的文件有语法错误,则不会加载其中的任何函数。如果您取出 main 的定义并尝试加载它,它应该可以正常工作。

在一个不相关的注释上,通常 Haskell 类型签名是用空格写的,比如lucky :: Int -> String.

于 2012-04-29T00:42:50.653 回答
4

您不需要module Main whereormain = do行。

您可以将函数定义加载和使用到 ghci 中,只需将文件保存为“.hs”扩展名,然后键入:load文件名

于 2012-04-29T01:39:19.267 回答