我正在使用Notepad ++和WinGHCi做一些功课,我必须定义一个小"数据库".格式是任意的,我不认为那是我出错的地方.无论如何,这是我在*.hs文件中使用的内容:
let studentDB = [
("sally", ["cpsc110", "cpsc312", "cpsc204"]),
("jim", ["cpsc110", "cpsc313"]),
("bob", ["cpsc121", "cpsc303", "cpsc212"]),
("frank", ["cpsc110", "cpsc212", "cpsc204"]),
("billy", ["cpsc312", "cpsc236"]),
("jane", ["cpsc121"]),
("larry", ["cpsc411", "cpsc236"]) ]
Run Code Online (Sandbox Code Playgroud)
WinGHCi给了我这个错误:a1.hs:118:1:解析错误(可能是错误的缩进)
我试图搞乱选中元组,或者将我的列表括号放在不同的行上但是无法正常工作.我认为较小的东西可以帮助我跟踪bug,所以我这样做了:
let s = []
Run Code Online (Sandbox Code Playgroud)
但这给了我同样的错误.这是一个缩进错误,可能是由于一些奇怪的Notepad ++行为?或者我的Haskell错了吗?谢谢.
Lil*_*ard 16
我想你会认为*.hs文件的内容就像你可以输入ghci一样.那是不对的.当你输入ghci时,你正在有效地输入一个do块.所以以下语法是正确的:
main = do
let s = []
-- do more stuff
Run Code Online (Sandbox Code Playgroud)
但是,在*.hs文件的顶层,情况有所不同.let结构实际上就是
let s = [] in
codeThatReferencesS
Run Code Online (Sandbox Code Playgroud)
如果你想定义一个顶级绑定,就说
s = []
Run Code Online (Sandbox Code Playgroud)