在输入“=”解析器时出现解析错误,即使我的缩进看起来是正确的
Getting parse error on input ‘=’parser, even if my indentation seems correct
我是 Haskell 的新手,我正在尝试创建一些小算法来理解 Haskell 的语法,
我正在尝试编写和编译快速排序算法,但它在编译时给我一个错误。
quicksort [] = []
quicksort (x:xs) = quicksort small ++ (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
谁能帮我理解为什么我在代码的第二行出现这个错误。
parse error on input ‘=’parser
.
谢谢,
我也是这个平台的新手,所以如果我不够清楚或者我需要改进我的问题,请在评论中告诉我。
意图在 haskell 中很重要。我可以用
重现你的错误
quicksort [] = []
quicksort (x:xs) = quicksort small ++ (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
.code.tio.hs:2:19: error:
parse error on input ‘=’
Perhaps you need a 'let' in a 'do' block?
但是当你删除第二个 quicksort
之前的 space 时,它编译正常。
从技术上讲,您可以在使用 {
、}
和 ;
时使用任何意图。 不推荐这样做, 因为您将很难找到需要牙套的确切位置,而且例子很少。 (“稀有”如“濒危物种”/“几乎灭绝”)
{
quicksort [] = [];
quicksort (x:xs) = quicksort small ++ (x : quicksort large) -- no `;` before `where`
where {small = [y | y <- xs, y <= x];
large = [y | y <- xs, y > x]};
main = print . quicksort $ "hello"
}
我是 Haskell 的新手,我正在尝试创建一些小算法来理解 Haskell 的语法, 我正在尝试编写和编译快速排序算法,但它在编译时给我一个错误。
quicksort [] = []
quicksort (x:xs) = quicksort small ++ (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
谁能帮我理解为什么我在代码的第二行出现这个错误。
parse error on input ‘=’parser
.
谢谢,
我也是这个平台的新手,所以如果我不够清楚或者我需要改进我的问题,请在评论中告诉我。
意图在 haskell 中很重要。我可以用
重现你的错误quicksort [] = []
quicksort (x:xs) = quicksort small ++ (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
.code.tio.hs:2:19: error: parse error on input ‘=’ Perhaps you need a 'let' in a 'do' block?
但是当你删除第二个 quicksort
之前的 space 时,它编译正常。
从技术上讲,您可以在使用 {
、}
和 ;
时使用任何意图。 不推荐这样做, 因为您将很难找到需要牙套的确切位置,而且例子很少。 (“稀有”如“濒危物种”/“几乎灭绝”)
{
quicksort [] = [];
quicksort (x:xs) = quicksort small ++ (x : quicksort large) -- no `;` before `where`
where {small = [y | y <- xs, y <= x];
large = [y | y <- xs, y > x]};
main = print . quicksort $ "hello"
}