Ste*_*3p0 8 haskell compiler-errors
我在通过Haskell教科书工作时,在.hs文件中的Haskell脚本中保存了一些命令.这是一个小例子.
fst (1,2)
snd (1,2)
Run Code Online (Sandbox Code Playgroud)
当我从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.
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个错误,无法找到任何解释我做错了什么.
mel*_*ene 14
您不能只在 hs 文件中放置任何表达式。
正如错误消息所说,您需要在此处进行声明。例如:
main =
print (fst (1,2)) >>
print (snd (1,2))
Run Code Online (Sandbox Code Playgroud)
从新手到未来新手:交互式环境ghci会让您相信您可以将一些表达式打入.hs文件并运行(与swift和ruby等语言类似).不是这种情况.
Haskell需要一个名为的入口点main.引用:
这是一个简单的程序来读取然后打印一个字符:
Run Code Online (Sandbox Code Playgroud)main :: IO () main = do c <- getChar putChar c名称main的使用很重要:main被定义为Haskell程序的入口点(类似于C中的main函数),并且必须具有IO类型,通常是IO()
资料来源:https://www.haskell.org/tutorial/io.html