Haskell 使用let-in.hs文件
我正在使用Notepad++和WinGHCi做一些家庭作业,我必须定义一个小“数据库”。格式是任意的,我不认为这是我错的地方。总之,以下是我在*.hs文件中使用的内容:Haskell 使用let-in.hs文件,haskell,Haskell,我正在使用Notepad++和WinGHCi做一些家庭作业,我必须定义一个小“数据库”。格式是任意的,我不认为这是我错的地方。总之,以下是我在*.hs文件中使用的内容: let studentDB = [ ("sally", ["cpsc110", "cpsc312", "cpsc204"]), ("jim", ["cpsc110", "cpsc313"]), ("bob", ["
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"]) ]
WinGHCi给了我这个错误:a1.hs:118:1:解析错误(可能是不正确的缩进)
我试着把元组的标签盖在或上,把我的列表括号放在不同的行上,但什么都做不到。我认为一些较小的东西可以帮助我跟踪bug,所以我改为:
let s = []
但这也给了我同样的错误。这是一个缩进错误,可能是由于一些古怪的记事本++行为?还是我的哈斯克尔错了?谢谢。我想您可能认为*.hs文件的内容与您可以在ghci中键入的内容类似。那是不对的。当您在ghci中键入内容时,实际上是在
do
块中键入内容。因此,以下语法是正确的:
main = do
let s = []
-- do more stuff
但是,在*.hs文件的顶层,情况有所不同。let构造实际上是
let s = [] in
codeThatReferencesS
如果要定义顶级绑定,只需说
s = []