为什么我的功能会让我超出范围错误?
{
"posts": [
{
"student": "Andreas",
"level": 4
},
{
"student": "Andreas",
"level": 3
},
{
"student": "Eivind",
"level": 4
},
{
"student": "Eivind",
"level": 5
},
{
"student": "Ole",
"level": 4
},
{
"student": "Ole",
"level": 3
}
]
}
错误:
tarefa1 :: [String] -> [String]
tarefa1 linhas = if res == ok then ["OK"] else [show res]
where
(tab,coords) = parteMapa conteudo
erro1 = validaTabuleiro 1 tab
erro2 = validaCoords (length tab + 1) tab coords
res = juntaErro erro1 erro2
Not in scope: `conteudo'.
应该是我在不同文件中的.txt文档,但我不知道如何在此函数中加载它。
答案 0 :(得分:1)
这不是一个很好的问题,因为这应该由基本的Haskell知识涵盖,并且它显然是我们这些能说葡萄牙语的人的作业。你不应该害怕向老师寻求帮助,我相信他很乐意给你这个。
尽管如此,由于可能回答这个问题,我会:
Haskell中的输入和输出只能在评估IO操作的函数内(即IO
类型的值)。
当然,由于main
的类型为IO ()
,因此您可以在其中执行IO操作。
读取文件的最简单方法是使用readFile
函数。它接受FilePath
并评估为IO String
(其中包含文件的完整内容)。我会给你一个例子,我希望你能从中得到它。
main :: IO ()
main = do
contents <- readFile "yourfilename.txt" -- because I used "<-", contents has type String
let fileLines = lines contents -- here I have a [String] with each line of the file
someFunction fileLines
return ()
在此示例中, someFunction
还应评估IO操作。你可以把东西放进去&#34; IO
使用return
,以防您不知道。