Haskell语法错误:意外`';可能是因为布局不好

Haskell语法错误:意外`';可能是因为布局不好,haskell,syntax,ghci,hugs,Haskell,Syntax,Ghci,Hugs,很长一段时间以来,我一直在第四行收到这个错误: 声明中出现语法错误(意外的“;”,可能是由于布局不正确) 在以下代码段中: import Data.Maybe leesIngrediënten:: Int->[[Char]]->[Int]->[Maybe [Char]]->[[Char]]->([Int], [Maybe [Char]], [[Char]]) leesIngrediënten 0 _ hoevs eenhs naams = (hoevs,

很长一段时间以来,我一直在第四行收到这个错误: 声明中出现语法错误(意外的“;”,可能是由于布局不正确) 在以下代码段中:

import Data.Maybe    

leesIngrediënten:: Int->[[Char]]->[Int]->[Maybe [Char]]->[[Char]]->([Int], [Maybe [Char]], [[Char]])
leesIngrediënten 0 _ hoevs eenhs naams = (hoevs, eenhs, naams)
leesIngrediënten n (line:lines) hoevs eenhs naams =
                 let 
                     (hoev, eenh, naam) = leesLijn line
                     in  
                       leesIngrediënten (n-1) lines (hoev:hoevs) (eenh:eenhs) (naam:naams)
在互联网上搜索后,我发现了错误的含义,但关键是我没有看到我的错误。(可能是因为我写的代码)

奇怪的是,拥抱是一种抱怨,而GHCi没有什么可抱怨的


提前谢谢

根据,Hugs不支持Unicode标识符。这可能导致语法错误。

根据,Hugs不支持Unicode标识符。这可能导致语法错误。

看起来确实是Unicode标识符的问题。当我运行你的代码时,我得到

3:12:词法错误(UTF-8解码错误)


但是,如果文件是已编译的文件,这一点很重要。如果是
exe
,不要使用
runhaskell
。这也可能造成问题。还有一点对未来的提示,如果在单词和标点符号之间使用更多的空格,您的代码将更易于阅读。

看起来Unicode标识符确实存在问题。当我运行你的代码时,我得到

3:12:词法错误(UTF-8解码错误)


但是,如果文件是已编译的文件,这一点很重要。如果是
exe
,不要使用
runhaskell
。这也可能造成问题。还有一点提示,如果您在单词和标点符号之间使用更多的空格,您的代码将更易于阅读。

AFAIK,Hugs已经过时,不再受支持。它可能只是一只虫子。然而,令我惊讶的是,您在
中缩进的
let
更深,GHC仍然接受它…@MathematicalOrchid,这是必需的,否则将拒绝一行
let x=5 in…
。请注意,
let
的位置也不相关(只要它不太靠左关闭打开的块),重要的是
let
之后第一个非字符的位置。
中的
将关闭
let
块(如果位于右侧,则会导致解析错误,并且标准IIRC声明,在这种情况下,您将关闭块并重试解析——是的,这很棘手……)UEWW,此签名非常糟糕!至少使用一些别名。对Haskell来说很陌生,不知道别名是什么。但是谢谢你提到它,从现在起我将使用它!哎呀,拥抱已经过时了,不再受支持了。它可能只是一只虫子。然而,令我惊讶的是,您在
中缩进的
let
更深,GHC仍然接受它…@MathematicalOrchid,这是必需的,否则将拒绝一行
let x=5 in…
。请注意,
let
的位置也不相关(只要它不太靠左关闭打开的块),重要的是
let
之后第一个非字符的位置。
中的
将关闭
let
块(如果位于右侧,则会导致解析错误,并且标准IIRC声明,在这种情况下,您将关闭块并重试解析——是的,这很棘手……)UEWW,此签名非常糟糕!至少使用一些别名。对Haskell来说很陌生,不知道别名是什么。但是谢谢你提到它,从现在起我将使用它!噢我认为我的编辑是无关紧要的。。。现在很抱歉。我认为我的编辑是无关紧要的。。。对不起