Haskell 不可见压痕错误导致GHCi加载失败
我遇到了一个由复杂的缩进引起的问题,下面是VI中的代码外观:Haskell 不可见压痕错误导致GHCi加载失败,haskell,syntax,Haskell,Syntax,我遇到了一个由复杂的缩进引起的问题,下面是VI中的代码外观: 1 import Data.List 2 myQuickSort [] = [] 3 myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger 4 where smaller = filter ( < x ) xs 5 bigger = filter ( >=x ) xs 在编程ha
1 import Data.List
2 myQuickSort [] = []
3 myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger
4 where smaller = filter ( < x ) xs
5 bigger = filter ( >=x ) xs
在编程haskell时,我应该如何捕捉这个不可见的缩进错误
编辑:
这样写,错误就会消失。将where绑定put变量作为where写在不同的行中是一种推荐的方法吗
myQuickSort [] = []
myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger
where
smaller = filter (<x) xs
bigger = filter (>=x) xs
myQuickSort[]=[]
myQuickSort(x:xs)=更小的myQuickSort++[x]++myQuickSort更大
哪里
较小=过滤器(=x)xs
qs.hs:
import Data.List
myQuickSort [] = []
myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger
where smaller = filter ( < x ) xs
bigger = filter ( >=x ) xs
导入数据。列表
myQuickSort[]=[]
myQuickSort(x:xs)=更小的myQuickSort++[x]++myQuickSort更大
其中较小=过滤器(=x)xs
GHCI:
GHCi,6.8.2版:http://www.haskell.org/ghc/ :? 求救
正在加载包库。。。链接。。。完成。
前奏曲>:l qs.hs
[1/1]编译主目录(qs.hs,已解释)
好的,模块已加载:Main。
*Main>myQuickSort[9,8,7,6]
[6,7,8,9]
您使用的是什么版本的GHCi
你说(建议)你的程序只有那5行,但错误在第61行。此外,它位于第14列,第14列在您给出的5行中没有=
例如,如果where在自己的行上,或者如果它在上面的行上,该程序对我来说也可以正常加载。可能是选项卡的问题。选项卡可能看起来与一定数量的空格相同,但Haskell不会认为它们是相同的您的问题与选项卡的扩展有关。Haskell假设一个制表符值8个空格。你的编辑可能有不同的假设。尝试在编辑器中搜索并用8个空格替换所有选项卡,然后调整间距以对齐where子句。标记,我没有粘贴整个程序,因此错误号与源代码不匹配。我发现我真正的问题是缩进的错误。我已经重写了我的问题。或者,在Vim中:
:set et
和:retab
以当前设置将制表符扩展为空格,然后:set ts=8
以确保将来制表符为8个空格。
myQuickSort [] = []
myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger
where
smaller = filter (<x) xs
bigger = filter (>=x) xs
import Data.List
myQuickSort [] = []
myQuickSort (x:xs) = myQuickSort smaller ++ [x] ++ myQuickSort bigger
where smaller = filter ( < x ) xs
bigger = filter ( >=x ) xs
GHCi, version 6.8.2: http://www.haskell.org/ghc/ :? for help
Loading package base ... linking ... done.
Prelude> :l qs.hs
[1 of 1] Compiling Main ( qs.hs, interpreted )
Ok, modules loaded: Main.
*Main> myQuickSort [9,8,7,6]
[6,7,8,9]