gpt4 book ai didi

haskell - 在 .hs 文件中使用 let

转载 作者:行者123 更新时间:2023-12-03 15:09:54 25 4
gpt4 key购买 nike

我正在使用 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: parse error (possibly wrong indentation)

我尝试将元组打乱或将列表括号放在不同的行上,但无法正常工作。我认为较小的东西可以帮助我跟踪错误,所以我这样做了:
let s = []

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

最佳答案

我想您认为 *.hs 文件的内容就像您可以在 ghci 中键入的内容一样。这是不正确的。当您输入 ghci 时,您实际上是在输入 do堵塞。所以下面的语法是正确的:

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

但是,在 *.hs 文件的顶层,情况有所不同。 let 构造实际上是
let s = [] in
codeThatReferencesS

如果要定义顶级绑定(bind),只需说
s = []

关于haskell - 在 .hs 文件中使用 let,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com