我是Haskell的初学者,我正在尝试创建一些小的算法来理解Haskell的语法,我试图编写和编译一个快速排序算法,但是它在编译时给了我一个错误。
quicksort [] = []
quicksort (x:xs) = quicksort small ++ (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
有人能帮我理解为什么我在代码的第2行出现这个错误吗?parse error on input ‘=’parser
。
谢谢,
我在这个平台上也是新的,所以如果我不够清楚或者我需要改进我的问题,请在评论中告诉我。
发布于 2022-05-05 07:38:52
哈斯克尔的监察事宜。我可以重现你的错误
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:在输入‘=’上解析错误,也许您需要在'do‘块中使用'let’?
但是,当您删除第二个quicksort
之前的空格时,它会编译得很好。
从技术上讲,当您使用{
、}
和;
时,您可以使用任何一种任天堂。--这是不推荐的,,因为您将很难找到需要大括号的确切位置,而且示例很少。(“稀有”如“濒危物种”/“几乎灭绝”)
{
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"
}
https://stackoverflow.com/questions/72122068
复制相似问题