繁体   English   中英

使用let .hs文件

[英]Using let in .hs file

我正在使用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"]) ]

WinGHCi给了我这个错误:a1.hs:118:1:解析错误(可能是错误的缩进)

我试着搞乱选中元组,或者将我的列表括号放在不同的行上但却无法正常工作。 我认为较小的东西可以帮助我跟踪bug,所以我这样做了:

let s = []

但这给了我同样的错误。 这是一个缩进错误,可能是由于一些奇怪的Notepad ++行为? 或者我的Haskell错了吗? 谢谢。

我想你会认为* .hs文件的内容就像你可以输入ghci一样。 那是不对的。 当你输入ghci时,你有效地输入了一个do块。 所以以下语法是正确的:

main = do
    let s = []
    -- do more stuff

但是,在* .hs文件的顶层,情况有所不同。 let结构实际上就是

let s = [] in
    codeThatReferencesS

如果你想定义一个顶级绑定,就说

s = []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM