这是Solitaire.hs文件的源代码:
import MergeSort
module Solitaire where
a :: Int
a = 2
MergeSort.hs和Solitaire.hs在同一目录中。
我正在使用WinGhci。
更改为目录并使用命令:load Solitaire.hs后尝试加载Solitaire.hs时出现的错误是:
Solitaire.hs:3:1: error: parse error on input ‘module’
|
3 | module Solitaire where | ^^^^^^
Failed, one module loaded.
*MergeSort>
奇怪的是,只需删除导入语句:import MergeSort
即可删除所有错误。
答案 0 :(得分:1)
看看grammar(5.1):
module → module modid [exports] where body
| body
body → { impdecls ; topdecls }
| { impdecls }
| { topdecls }
impdecls → impdecl1 ; … ; impdecln (n ≥ 1)
topdecls → topdecl1 ; … ; topdecln (n ≥ 1)
此外,在5.3节中:
一个模块导出的实体可以在另一个模块的作用域中加入另一个声明,在模块的开头 。
如您所见,导入必须位于模块的 中,因此您的代码应为:
module Solitaire where
import MergeSort
a :: Int
a = 2