我在通过Haskell教科书工作时,在.hs文件中的Haskell脚本中保存了一些命令。这是一个小例子。
fst (1,2)
snd (1,2)
当我从GHCi的前奏中运行这些命令时,它们工作正常。当我尝试使用这两行编译.hs文件时,我得到以下内容:
ch4_test.hs:2:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
2 | fst (1,2)
| ^^^^^^^^^
Failed, no modules loaded.
我已经搜索了这个错误,无法找到任何解释我的错误。
答案 0 :(得分:7)
从新手到未来的新手:交互式环境ghci
会让您相信您可以将一些表达式打入.hs
文件中并运行它(与Swift语言类似)和红宝石)。事实并非如此。
Haskell需要一个名为main
的入口点。报价:
这是一个简单的程序,可读取然后打印字符:
main :: IO () main = do c <- getChar putChar c
使用名称main很重要:main被定义为Haskell程序的入口(类似于C中的main函数),并且必须具有IO类型,通常是IO()
答案 1 :(得分:4)
您不能将任何表达式放在hs文件中。
正如错误消息所示,您需要在此处声明。例如:
main =
print (fst (1,2)) >>
print (snd (1,2))